Persistent connection extension not freeing connections until server is restarted
| From: | Matt Anderson | Date: | Thu, 07 Aug 2003 00:05:56 +0000 |
| Subject: | Persistent connection extension not freeing connections until server is restarted | ||
| Groups: | php.smarty.dev | ||
| Request: | Send a blank email to php-smarty-dev+get-1738@lists.php.net to get a copy of this message | ||
Hi all,
I have a fairly advanced question regarding writting modules that create persistent resources:
I've written a module very similar to the 'de-facto standard' mysql implementation, however its developed a strange bug. Occasionally, after working with a persistent connection for a few page calls, php seems to 'forget' that its there, without calling the resources' cleanup handler. The eventual result, sence the resource opens a socket connection to another server (my module binds another API into php), the connections will pile up needlessly.
I've done all the normal debugging, including adding E_NOTICE errors to find exactly the path through the code thats being taken. The same result every time, for the exact same 'hashed_identifier' the plink is found a few times, then mysteriously isnt, with no call to the resources' cleanup handler.
Also, interestingly enough, explicit calls to zend_list_delete(Z_RESVAL_PP(link)); does not seem to call the cleanup handler either.
When I restart apache and thus mod_php all the connections are promply and correctly closed using the cleanup handler.
If anyone is interested in taking a look,
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/evopvr/evopvrd/src/evophp/php_evopvr.c?rev=1.8&content-type=text/vnd.viewcvs-markup
is my module source in CVS.
Appreciate any help or feedback,
Thanks
Matt Anderson