Всем привет.
Пытаюсь организовать на Perl'е сессии посредством модуля CGI::Session и, в частности, драйвера к нему CGI::Session::Driver::postgresql. Грубо говоря, причиной тому наличие триггеров, стабильности, бесплатности и прочих замечательных достоинств у PostgreSQL, которые делают его чуть ли не идеальной СУБД для реализации сессий.
Соответственно, пользуюсь следующим мануалом - CGI::Session::Driver::postgresql.
Создаю таблицу в соответственной БД:
CREATE TABLE sessions ( id CHAR(32) NOT NULL PRIMARY KEY, a_session BYTEA NOT NULL );
#!/usr/bin/perl USE DBI; $dbname = "module_sys"; $pg_host = "localhost"; $pg_username = "postgres"; $pg_password = "postgres"; $dbh = DBI->connect("dbi:Pg:dbname=$dbname;host=$pg_host", "$pg_username", "$pg_password", {PrintError => 0}); IF ($DBI::err !=0) { print $DBI::errstr . "\n<br>"; exit($DBI::err); } USE CGI::Session; $session = CGI::Session->new("driver:postgresql", undef, {Handle=>$dbh, ColumnType=>"binary"}); $session->param('username', 'Vasya'); print "Content-type: text/html\n\n"; print "Hi, ".$session->param('username')."! Number of your session is ".$session->id."\n<br>";
$session = CGI::Session->new("driver:file", undef, {Directory => "sessions"});
Судя по тому что вы пишите,
Судя по тому что вы пишите, PostgreSQL здесь не при чём - проблема в реализации драйвера "driver:postgresql". Попробуйте колупнуть исходник, возможно поймёте в чём дело.
Попробуйте также проверить содержимое $DBI::errstr и $dbh->errstr после строчек:
и
Возможно увидите какие-либо ошибки
$DBI::errstr и $dbh->errstr
$DBI::errstr и $dbh->errstr пустые. Видимо, проблема в реализации драйвера. Попробую разобраться. Или же в крайнем случае напишу некий аналог.
Спасибо за помощь )