ID: 25266 Updated by: [EMAIL PROTECTED] Reported By: avarnals at zigg dot net -Status: Feedback +Status: No Feedback Bug Type: Apache2 related Operating System: Linux 2.4.21 PHP Version: 4.3.3 New Comment:
No feedback was provided. The bug is being suspended because we assume that you are no longer experiencing the problem. If this is not the case and you are able to provide the information that was requested earlier, please do so and change the status of the bug back to "Open". Thank you. Previous Comments: ------------------------------------------------------------------------ [2003-12-09 06:15:42] [EMAIL PROTECTED] Please try using this CVS snapshot: http://snaps.php.net/php4-STABLE-latest.tar.gz For Windows: http://snaps.php.net/win32/php4-win32-STABLE-latest.zip ------------------------------------------------------------------------ [2003-08-26 22:05:10] avarnals at zigg dot net Description: ------------ See bug #22072. Since the above is now closed, I am creating this entry. Please accept my apologies if it would have been better added to 22072 instead. I wasn't aware of this potential problem until I saw it in the change log for 4.3.3, so I thought I'd test it. Something is still not right. I'm using PHP 4.3.3 with Apache 2.0.47. My first test was to see whether ignore_user_abort() works as expected. I used the very simple: ignore_user_abort ( false ); while ( 1 ); This makes it easy to spot in the process list using 'top'. I tested both using PHP as a dynamically loaded Apache module and the CGI binary. The latter had safe mode enabled, the former didn't; I don't know whether this can/should make any difference. In both cases the script continued to execute after I clicked on the browser's stop button and until its PHP enforced time limit was reached. I then went on to test ( using only the Apache module ) using the code suggested in bug report 22072: http://www.mpfreescene.com/test/?option=source As rather expected now, this continued to execute after I'd used the stop button. I went on to test by modifying the code as follows: - I set set_time_limit(15); so it would eventually be aborted by this limit. - I made $m very large. - Have the result of connection_status() written to a file each time round the loop. - I removed the sleep() call. I ran the script and used the stop button while it was running. It continued to execute until it had used 15 seconds of CPU time. Log file shows: httpd: PHP Fatal error: Maximum execution time of 15 seconds exceeded in... The final ( large ) output file contained all zeros and a final 2. So, it seems that PHP correctly detects and reports the case of a timeout, but not an abort. I noticed one other possibly odd thing while doing this. If PHP has output buffering enabled, the call to flush() results in the script being immediately shut down ( execution doesn't get to the line following flush() ). The result of connection_status() when called in exitfp() is then 1. If the flush() call is removed, the results as previously described are the same whether or not output buffering is enabled. I hope someone can make sense of all this! Do let me know if you would like any further information. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=25266&edit=1