The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
#!/usr/bin/perl

$DB_SOURCE = 'dbi:mysql:sessions';
$DB_AUTH   = 'root:';

use strict;
use vars qw( $DB_SOURCE $DB_AUTH );
use CGI::Scribe::DBI;          
use Benchmark;

my %data = (
             first_name    => 'Maurice',
             last_name     => 'Aubrey',
             registration  => 41222,
             authenticated => 1,
             frames        => 0,
           );

my $session = new CGI::Scribe::DBI( undef,
                                    { db_source => $DB_SOURCE,
                                      db_auth   => $DB_AUTH } );
my $id = $session->session;
foreach my $key (keys %data) {
  $session->param( $key, $data{ $key } );
}
my $cookie = $session->cookie(qw( first_name last_name authenticated ));
undef $session;

timethese( 10000, 
  {
    'server_read' => sub {
                           my $scribe = new CGI::Scribe::DBI($id, 
                             {
                               db_source => $DB_SOURCE,
                               db_auth   => $DB_AUTH,
                             }
                           );
                           $scribe->param('first_name');
 
                         }, 
    'cookie_read' => sub {
                           my $scribe = new CGI::Scribe::DBI(undef, 
                             {
                               db_source => 'dbi:mysql:sessions',
                               db_auth   => 'root:',
                               cookie    => $cookie 
                             }
                           );  
                           $scribe->param('first_name');
                         },
    'server_cookie_read' => sub {
                                  my $scribe = new CGI::Scribe::DBI(undef, 
                                    {
                                       db_source => 'dbi:mysql:sessions',
                                       db_auth   => 'root:',
                                       cookie    => $cookie 
                                    }
                                  );
                                  $scribe->param('frames');           
                                }, 
           
  }
);