Re: Make set_time_limit() timeout a catchable fatal error
| From: | Hannes Landeholm | Date: | Wed, 09 Mar 2011 14:30:14 +0000 |
| Subject: | Re: Make set_time_limit() timeout a catchable fatal error | ||
| References: | 1 2 3 4 5 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-51634@lists.php.net to get a copy of this message | ||
You mean the shutdown function is called and 1 nanosecond later PHP crashes
so you don't have time to do anything?
~Hannes
On 9 March 2011 15:27, David Muir <davidkmuir@gmail.com> wrote:
> Hmm, I think I worded that poorly.
> A function registered with register_shutdown_function does execute when
> the max_execution_time is exceeded.
> What it doesn't let you do is to recover in the same way an error
> handler would let you.
>
> David
>
> On 09/03/11 22:56, Hannes Landeholm wrote:
> > I second making time limit reached catchable. All non catchable fatal
> errors
> > are a problem for me. I need to handle problems gracefully to ensure the
> > stability of production systems instead of PHP just killing itself
> without
> > warning. I just reported a similar issue:
> > http://bugs.php.net/bug.php?id=54195
> >
> > A simple way to implement this would be to register a function that would
> be
> > called N seconds before the script would timeout.
> >
> > register_timeout_handler(2, function() { die("PHP timed out."); });
> >
> > It would be called just as a shutdown function - in fact I'd like to use
> the
> > same function as my shutdown function and get the error with
> > error_get_last(). Of course set_time_limit(0) could be used in this
> function
> > to prevent the timeout of the timeout handler. This does not "prevent"
> > timeout since set_time_limit could have been called by the script before
> the
> > timeout anyway.
> >
> > On that note I also miss a function which returns the time the script can
> > keep running for. If that calculate needs to be calculated to implemented
> to
> > implement this, why not make the value available to the PHP script?
> >
> > ~Hannes
> >
> > On 9 March 2011 02:30, David Muir <davidkmuir@gmail.com> wrote:
> >
> >> Although it doesn't let you recover from a timeout, you could use
> >> register_shutdown_function to gracefully exit after a fatal error.
> >>
> >> register_shutdown_function(function(){
> >> $error = error_get_last();
> >> if($error && $error['type'] === E_ERROR){
> >> echo 'PHAIL! Oh noes, something went wrong!';
> >> // do whatever else you need to do before quitting
> >> }
> >> });
> >>
> >> Cheers,
> >> David
> >>
> >> On 08/03/11 22:39, Pierre Joye wrote:
> >>> hi,
> >>>
> >>> is not the goal of this setting to prevent that a script runs longer
> >>> than a given time? A catchable error will prevent that to happen.
> >>>
> >>> On Tue, Mar 8, 2011 at 2:05 PM, Sebastian Bergmann <sebastian@php.net>
> >> wrote:
> >>>> Could set_time_limit() be changed in such a way that it triggers a
> >>>> catchable fatal error instead of a fatal error? Thanks!
> >>>>
> >>>> --
> >>>> Sebastian Bergmann Co-Founder and Principal
> >> Consultant
> >>>> http://sebastian-bergmann.de/
> >> http://thePHP.cc/
> >>>> --
> >>>> PHP Internals - PHP Runtime Development Mailing List
> >>>> To unsubscribe, visit:
> >>>> http://www.php.net/unsub.php
> >>>>
> >>>>
> >>>
> >>
> >> --
> >> PHP Internals - PHP Runtime Development Mailing List
> >> To unsubscribe, visit: http://www.php.net/unsub.php
> >>
> >>
>
>
> --
> PHP Internals - PHP Runtime Development Mailing List
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>