On Thursday, I updated my PostgreSQL installation from version 7.1.3 to 
version 7.3. Generally, nothing changed, the databases still contain the 
appropriate data, and most of my PHP scripts continued to run flawlessly. 
Great. Mostly. Some scripts did apparently get broken. 

For instance, in a photo-album script I had written, I started seeing errors 
that seemed to indicate that the TCP/IP connections between Apache/PHP and 
PostgreSQL were being lost during the processing of the script. Now, the 
script in question, and the area that generated the error does take a while 
to process; a lot of data such as links to images, and image caption 
information is being returned and placed into a tabular format. While I have 
seen this take as long as 30 seconds to process and render the page, I don't 
believe that the processing time limit is being hit to generate the errors. 
Considering that I didn't update PHP from 4.2.3 to 4.3.0 until today, I'm not 
sure that it's a PHP error directly.

Has anyone else encountered an error such as the first one below? (The 
subsequent errors I'm sure are caused by the disconnect.) When I first 
started seeing the errors, I added a little bit of code to check the 
connection status. If the connection status wasn't OK, then it would 
reconnect, and reissue the query. That eliminated almost all of the errors, 
but this one remains even after I duplicated the check/reconnect code and 
placed it just above the line that triggered the error message.

Warning: pg_query() [function.pg-query]: Query failed: 
server closed the connection unexpectedly This probably 
means the server terminated abnormally before or while 
processing the request. . in /home/mogami/www/special/
photoman.php on line 257

Warning: pg_num_rows(): supplied argument is not a valid 
PostgreSQL result resource in /home/mogami/www/special
/photoman.php on line 258
None
Warning: pg_free_result(): supplied argument is not a 
valid PostgreSQL result resource in /home/mogami/www/
special/photoman.php on line 272

Any and all help is appreciated. Here is a code fragment:
//query to determine how many pictures are in the database, 
for ($i=0; $i<$picturecount; $i++) {//this isn't the actual loop, but gives 
you the general idea
if (pg_connection_status($db)!=PGSQL_CONNECTION_OK) {
        pg_close($db);
        pg_free_result($pq);
        $pq=pg_query($db,"select *,extract(epoch from takenon) as pdate from 
picture_table order by picture_id;");
        $db=pg_connect("dbname=$dbname host=127.0.0.1 user=user password=
password");
}
$aq=pg_query($db,"select * from album_contents where picture_id=$pi->
picture_id order by album_id;");
$ac=pg_num_rows($aq);
if ($ac>0) {
        print("<ul>");
        for ($j=0; $j<$ac; $j++) {
                $ai=pg_fetch_object($aq,$j);
                $anq=pg_query($db,"select * from album_table where album_id=$ai->
album_id;");
                $an=pg_fetch_object($anq,0);
                pg_free_result($anq);
                print("<li>$an->title");
        }
        print("</ul>");
} else {
        print(" None");
}
pg_free_result($aq);

}

By the time I see the error currently, the $i (outside) loop has gone through 
80-90 iterations, then I see the error once, and the remaining iterations of 
the loop don't exhibit the error. That's probably the strangest part of this 
behavior.

Thanks,
Raymond


-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to