Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:51630 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 88476 invoked from network); 9 Mar 2011 13:56:51 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 9 Mar 2011 13:56:51 -0000 Authentication-Results: pb1.pair.com header.from=landeholm@gmail.com; sender-id=pass; domainkeys=bad Authentication-Results: pb1.pair.com smtp.mail=landeholm@gmail.com; spf=pass; sender-id=pass Received-SPF: pass (pb1.pair.com: domain gmail.com designates 209.85.214.170 as permitted sender) DomainKey-Status: bad X-DomainKeys: Ecelerity dk_validate implementing draft-delany-domainkeys-base-01 X-PHP-List-Original-Sender: landeholm@gmail.com X-Host-Fingerprint: 209.85.214.170 mail-iw0-f170.google.com Received: from [209.85.214.170] ([209.85.214.170:63349] helo=mail-iw0-f170.google.com) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id 06/30-21312-127877D4 for ; Wed, 09 Mar 2011 08:56:49 -0500 Received: by iwn3 with SMTP id 3so554953iwn.29 for ; Wed, 09 Mar 2011 05:56:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:in-reply-to:references:date :message-id:subject:from:to:content-type; bh=QNin+s4t1RSpynLN9sModlQqBNaudTpgb1NGYtUsvKI=; b=T0zXopXSgYDVg7pvS4rF4/+ujQysYkYR4Luo6h4QlQfICeP0cTCNL/ya0o2ayt7AP/ Ahszle9mCNRR5I4ikiBysOWhpQCifzY3+0ydCI1wsQBmga7qIGrJPpLgptYfyK23lJ/z JyRU8hq91s78CG9nSubje4sZRJLJe6QY2VpFM= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; b=erxXzfmwVrpnk5qrsZ6w+7CNgkY3qylFzui3sBNdaBz4idw7xre6vCM/2cq/XdvbY4 s0lyZWLOAdaTZBvFu8dqLJP1Vr/KLt1cMWbCeq2Vf/WtUy1eVRJrDdaTxkXgixFruQ6w tiJVysIkdQJmlKrxm8wVfyE+6DttUdT7qwbz8= MIME-Version: 1.0 Received: by 10.231.63.10 with SMTP id z10mr4905202ibh.149.1299679007032; Wed, 09 Mar 2011 05:56:47 -0800 (PST) Received: by 10.231.17.68 with HTTP; Wed, 9 Mar 2011 05:56:46 -0800 (PST) In-Reply-To: <4D76D849.6000103@gmail.com> References: <4D7629B5.4090007@php.net> <4D76D849.6000103@gmail.com> Date: Wed, 9 Mar 2011 14:56:46 +0100 Message-ID: To: internals@lists.php.net Content-Type: multipart/alternative; boundary=000e0cd572c48944b6049e0d19b7 Subject: Re: [PHP-DEV] Make set_time_limit() timeout a catchable fatal error From: landeholm@gmail.com (Hannes Landeholm) --000e0cd572c48944b6049e0d19b7 Content-Type: text/plain; charset=ISO-8859-1 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 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 > 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 > > --000e0cd572c48944b6049e0d19b7--