php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #17461 register_shutdown_function() timeout problem
Submitted: 2002-05-27 14:11 UTC Modified: 2002-12-08 10:44 UTC
Votes:6
Avg. Score:5.0 ± 0.0
Reproduced:4 of 5 (80.0%)
Same Version:2 (50.0%)
Same OS:2 (50.0%)
From: jason at thinkingman dot org Assigned:
Status: Not a bug Package: Scripting Engine problem
PHP Version: 4.2.1 OS: Windows 2000 SP2
Private report: No CVE-ID: None
 [2002-05-27 14:11 UTC] jason at thinkingman dot org
REGISTER_SHUTDOWN_FUNCTION() doesn't work on TIMEOUT for the Win32 platform.

I've tried this under PHP versions 4.1.1 and 4.2.1 -- same thing happens.  Here's a sample script:

1: ?>
2:
3: set_time_limit(1);
4:
5: function clean_up()
6: {
7:  print("Script Terminated\n");
8: }
9: 
10: register_shutdown_function("clean_up");
11:
12: while(1);
13:
14: ?>

Here's the error:
-----------------
Fatal error: Maximum execution time of 1 second exceeded in C:\timeout_code.php on line 7

When this script TIMES-OUT, the REGISTER_SHUTDOWN_FUNCTION() will "attempt" to run the function "clean_up" but will *immediately* generate the error above in the 1st line (line 7, in this case) of the "clean_up" function -- no matter what it is, and then the script terminates.

Now -- if I use the REGISTER_SHUTDOWN_FUNCTION() with an EXIT (instead of a TIMEOUT), the function works fine... it *just* seems to be a TIMEOUT issue.

The REGISTER_SHUTDOWN_FUNCTION() needs to ignore the TIMEOUT (timer??) -- and proceed to run any code it's programmed to run.

Just a Note: I understand that PRINT() and a few other functions will not work when a REGISTER_SHUTDOWN_FUNCTION() is called and *run* SERVER-SIDE -- however, I am running this script from the COMMAND-LINE and PRINT() does work here, even with a REGISTER_SHUTDOWN_FUNCTION() -- so PRINT() isn't the problem... Just for giggles, I've replaced the PRINT() function with an ERRORLOG() function, in an attempt to write the output to disk -- SAME ERROR and exits on line 7 -- never executing the code.

Thanks
Jason Caldwell
jason@thinkingman.org


Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2002-09-17 11:51 UTC] jason at thinkingman dot org
I posted the following response in php.general and php.windows -- responding to users whom looked at the online help file for REGISTER_SHUTDOWN_FUNCTION() on php.net and inquired whether this TIMEOUT was actually a bug or a feature request:
----------------------------------------------
It's a bug.  spoke to Rasmus at some length about just before i posted it in the bug report.

The online help page is inaccurate in describing the full functionality of the function: http://www.php.net/manual/en/function.register-shutdown-function.php

REGISTER_SHUTDOWN_FUNCTION() is suppose to kick-off when any one of the following things happen -- Exit, Error, TIMEOUT or User Abort.

According to Rasmus, the TIMEOUT functionality of this function works fine under Linux -- however, it's not working under Win32 !

There apparently is another bug with this function -- you are suppose to be able to call more than one REGISTER_SHUTDOWN_FUNCTION(), and they are suppose to executed in-order... some people are reporting that only the first encountered REGISTER_SHUTDOWN_FUNCTION() is executed, then the script exits.

Someone needs to go through this function, pretty thoroughly, and get it working correctly.  Being able to run code on a timeout, user-abort or error is critical.

Jason
 [2002-12-08 10:44 UTC] sniper@php.net
Please do not submit the same bug more than once. An existing
bug report already describes this very problem. Even if you feel
that your issue is somewhat different, the resolution is likely
to be the same. Because of this, we hope you add your comments
to the existing bug instead.

Thank you for your interest in PHP.


Please add possible additional information here:

  http://bugs.php.net/bug.php?id=14542

(no need for many reports about same issue)

 [2010-05-20 00:25 UTC] xxleite at gmail dot com
i try to play with all, but i got the same error...

set_time_limit doesnt works well with register_shutdown_function, please fix it 
for our php pride! ...

thanks anyway.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Tue Apr 16 19:01:31 2024 UTC