Re: Safe timeout handling

From: Date: Thu, 21 Apr 2016 15:45:32 +0000
Subject: Re: Safe timeout handling
References: 1  Groups: php.internals 
Request: Send a blank email to internals+get-92598@lists.php.net to get a copy of this message
On Wed, Apr 20, 2016 at 12:58 PM, Dmitry Stogov <dmitry@zend.com> wrote: > Hi, > > > It's a well known PHP problem, that exceeding of execution time-out (max_execution_time) > may lead to unexpected crashes. > > They occur because PHP may be interrupted in inconsistent state, and attempt to release > allocated by request resources leads to failure. > > Almost any big site sees these crashes from time to time. > > > I propose to delay actual request termination until a "safe" point in interpreter. > > Signal handler will just set EG(timed_out) flag. > > Interpreter will check this time from time to time (on jumps and calls that may make loops or > recursion) and perform the actual termination. > > This approach already works in PHP for Windows. > > > In addition I introduce hard_timeout (default value 2 seconds). > > In case the "soft" timeout wasn't handled "safely" in that 2 seconds > (because of long running internal function), PHP process will be terminated without attempt to free > any resources. > > ZTS build will ignore "hard_timeout" (in the same way as PHP on Windows do). > > > The PR: https://github.com/php/php-src/pull/1876 > > > It removes "exit_on_timeout" ini directive, and introduces "hard_timeout" > instead. > > Additional checks in VM make 0.5-1% slowdown in term of instruction retired reported by > callgrind. > > I think we don't need RFC for this. This is a long time desired fix. > > > The same "interrupt" handling mechanism in the future may be reused for TICK and > signal handling. > > > Thanks. Dmitry. Hi ! Good new. No RFC needed, but that breaks ABI and could impact extensions. So, 7.1 as target is OK, not 7.0 Julien.P

« previous php.internals (#92598) next »