Обсуждение: Having problems with user defined sessions using postgresql as my session manager

Поиск
Список
Период
Сортировка

Having problems with user defined sessions using postgresql as my session manager

От
Richmond Dyes
Дата:
I have written user defined session management library in php using postgresql as my session repository.  When I let
mysession timeout on my browser I get the below errors on my screen.<br /><br />    <b>Warning</b>: pg_query(): Query
failed:ERROR: duplicate key violates unique constraint "li_session_pkey" in
<b>/var/www/html/liberty/includes/session.php</b>on line <b>31</b><br /><br /><b>Fatal error</b>: Call to undefined
function:pg_error() in <b>/var/www/html/liberty/includes/session.php</b> on line <b>31</b><br /><br /><b>Warning</b>:
Unknown():A session is active. You cannot change the session module's ini settings at this time. in <b>Unknown</b> on
line<b>0<br /><br /> The problem is in the write function of my library. Here it is:<br /><br /> function
pg_session_write($sid,$val) {<br />     $life = get_cfg_var("session.gc_maxlifetime");<br />     $exp = time() +
$life;<br/>     $selQ = "SELECT sidid FROM li_session<br />     WHERE sidid = '$sid' AND exptime >". time();<br />
   $selR= pg_query($selQ)or die("It didn't work:". pg_error());<br />      if(pg_num_rows($selR)) {<br />        
$sesupQ="UPDATE li_session SET<br />         exptime = '$exp', vidval = '$val'<br />         WHERE<br />         sidid
='$sid' and exptime >". time();<br />         $sesupR=pg_query($sesupQ) or die("It didn't work:". pg_error());<br />
   } else {<br />      $sesinQ = "INSERT INTO li_session<br />     VALUES('$sid', '$val', '$exp')";<br />     $sesinR=
pg_query($sesinQ)or die("It didn't work:". pg_error());    <br />     }<br /> }<br /></b> 

Re: Having problems with user defined sessions using postgresql

От
Erik Jones
Дата:
Ok,

1.  PHPs postgres lib doesn't have a pg_error() function.  You want
pg_last_error().
2.  Are you using the sid as li_session's primary key?  If so, before
you create a new session with an already existing sid, you will need to
delete the old sid entry before inserting a new one with the same sid.

Richmond Dyes wrote:
> I have written user defined session management library in php using
> postgresql as my session repository.  When I let my session timeout on
> my browser I get the below errors on my screen.
>
>    *Warning*: pg_query(): Query failed: ERROR: duplicate key violates
> unique constraint "li_session_pkey" in
> */var/www/html/liberty/includes/session.php* on line *31*
>
> *Fatal error*: Call to undefined function: pg_error() in
> */var/www/html/liberty/includes/session.php* on line *31*
>
> *Warning*: Unknown(): A session is active. You cannot change the
> session module's ini settings at this time. in *Unknown* on line *0
>
> The problem is in the write function of my library. Here it is:
>
> function pg_session_write($sid, $val) {
>     $life = get_cfg_var("session.gc_maxlifetime");
>     $exp = time() + $life;
>     $selQ = "SELECT sidid FROM li_session
>     WHERE sidid = '$sid' AND exptime >". time();
>     $selR= pg_query($selQ)or die("It didn't work:". pg_error());
>      if(pg_num_rows($selR)) {
>         $sesupQ ="UPDATE li_session SET
>         exptime = '$exp', vidval = '$val'
>         WHERE
>         sidid = '$sid' and exptime >". time();
>         $sesupR=pg_query($sesupQ) or die("It didn't work:". pg_error());
>     } else {
>      $sesinQ = "INSERT INTO li_session
>     VALUES('$sid', '$val', '$exp')";
>     $sesinR= pg_query($sesinQ) or die("It didn't work:". pg_error());
>     }
> }
> *


--
erik jones <erik@myemma.com>
software development
emma(r)