ID: 14303
Updated by: zak
Reported By: [EMAIL PROTECTED]
Old Status: Open
Status: Feedback
Bug Type: Reproducible crash
Operating System: Redhat 7.2
PHP Version: 4.0.6
New Comment:

There is a not-yet-documented function called 
apache_child_terminate that should help you.

Call the function at the end of your script so that Apache 
knows to terminate the process running the script (and 
clean up its memory)

There was a recent thread on the PHP Dev mailing list 
related to this issue. If you are curious, check the list 
archives (or news group) for more information.  The first 
message in the thread was started by Edin Kadribasic on 
Fri, 23 Nov 2001. You can also search for 
ap_child_terminate and apache_child_terminate.

Visit http://www.php.net/support.php for information on 
where to find the archive and news group.


Also, please do write back to let us know if the function 
helped your problem.


Previous Comments:
------------------------------------------------------------------------

[2001-11-30 13:39:07] [EMAIL PROTECTED]

I've had a lot of problems recently with PHP cleaning up properly after using large 
data structures.

A sample script is included:

$huge_array = array();
for ( $i=0 ; $i<= 8000 ; $i++ ) {
  foreach (array("cn" , "uid" , "sn" , "givenName" , "attr1" , "attr2" , "attr3") as 
$j ) {
    for ( $k=0 ; $k<= 50 ; $k++ ) { 
      $huge_array[$i][$j][$k] = rand(0,10000)."value";
    }
  }
}

The script executes normally, but the httpd thread remains afterwards, consuming 
memory and CPU.  It appears to need a kill -9 to make it finally die.  If enough of 
these are run, all of the child processes of apache get tied up, preventing it from 
serving any more requests.  At this point the threads have to be killed and the server 
restarted.

I've also encountered similar problems with storing the results of a large 
ldap_get_entries(), although the behavior of the above script suggests that the 
problem is not actually with the LDAP function.  Reducing the size of the query 
incrementally reveals that there seems to be a "breaking point" where this behavior 
begins.

httpd also logs that it has problems terminating its child processes:

[warn] child process 9541 still did not exit, sending a SIGTERM

I'm running php-4.0.6-7 under apache-1.3.20-16, all Redhat 7.2 RPMs, with the default 
configuration.

------------------------------------------------------------------------



Edit this bug report at http://bugs.php.net/?id=14303&edit=1


-- 
PHP Development Mailing List <http://www.php.net/>
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
To contact the list administrators, e-mail: [EMAIL PROTECTED]

Reply via email to