I've been having a very frustrating problem over the past few months that
I've ***finally*** tracked down the "cause" of....
Any questions/comments/thoughts/ideas you can provide would be *greatly*
- IE, Opera, Lynx all report "page cannot be displayed" and/or "server
error" about "half the time"....
- NS has no problems at all.
- Apache error.log shows child (PID) seg faulted.
Problem post analysis:
- The Apache processes can accept and successfully serve one connection from
a client. The next connection results in the Apache child process seg
faulting, the error getting logged in error.log, nothing gets reported in
access.log, and the Apache parent process respawns a new child.
- The newly spawned child will accept and serve one connection from a client
before also segfaulting.
I've eliminated every possibility I could think of while troubleshooting
this. i.e. it's not SSL, it's not PHP itself, it's not Apache itself. It's
the pg_pconnect() function.
Throughout my troubleshooting, I came upon it by accident, really, that I
discovered all my problems went away when I replaced the pg_pconnect()
function with the (almost deprecated according to the docs) pg_connect()
In troubleshooting this, I created a shell script that continuously loads
various pages from the site (using Lynx -dump -mime_header <url>), counts
the iterations, and bails as soon as a page fails to load. Running this
against plain HTML files, PHP scripts (i.e. that simply echo something or
provide phpinfo(), etc.), over SSL or not all work just fine. (>15,000
loads in each case without fault.)
As soon as I try accessing a PHP script that includes the pg_pconnect()
function, it dies almost immediately. If I stop/start Apache right before
trying this, I'll get X successful loads (where X = Apache's 'StartServers'
property). After that, I'll get a continuous mixture of successful and
failed loads from then on....
So, let me repeat here.... As soon as I switched from pg_pconnect() to
pg_connect(), everything worked perfectly after that. (i.e. >15000 loads
without an error.)
- My platform is up-to-date Debian GNU/Linux (sid) (Apache 1.3.23, PHP
4.1.1, PostgreSQL 7.1.3, etc.)
- As above, this is *not* browser specific. (Found a *lot* of google hits
with people having problems with IE and SSL and seg faults, etc. Completely
- Note from above, though, that NS is unaffected by this problem. It
*never* has a problem. My assumption is that NS will simply silently retry
(several times) if the connection fails for some reason, until it does get a
valid response from the server.... (Kudos!!! ;-)
So, any thoughts? Comments? Suggestions?
Have I found a bug in pg_pconnect()? How can I provide more info to track
this down further?
Chief Information Officer, Co-founder
Merilus, Inc. ---=== www.merilus.com ===---
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php