Re: set_time_limit () - CPU time or elapsed time?
| From: | Stuart Dallas | Date: | Sun, 13 Apr 2014 00:42:48 +0000 |
| Subject: | Re: set_time_limit () - CPU time or elapsed time? | ||
| References: | 1 | Groups: | php.general |
| Request: | Send a blank email to php-general+get-323182@lists.php.net to get a copy of this message | ||
On 12 Apr 2014, at 20:14, Tim Streater <timstreater@greenbee.net> wrote:
> This function limits the"execution time" for a script. Is this CPU time or elapsed
> (wall-clock) time?
It’s elapsed time*, and technically it doesn’t so much limit the execution time so much as set
it from the moment you call the function.
> I'm asking because I'm running Win7 in a VirtualBox VM under OS X Mavericks.
> I've got an app that runs a number of scripts, using PHP 5.5.9. All runs correctly, but quite
> slowly, and a one script reports taking 20 secs or so of elapsed time when I might have expected 2
> or 3 at most (as the same script running under OS X does).
There could be any number of reasons why there is such a big difference between the different
platforms. Virtual boxes tend to be significantly slower than their host machines, especially when
it comes to IO operations.
> I know that there is a note in the online doc for this function that says that under windows,
> extra time such as database calls is included. Would that include SQLite calls which wouldn't
> be included for the OS X version?
* Under Windows it’s elapsed time spent executing the PHP script regardless of what it’s doing,
but under other platforms it’s elapsed time spent executing PHP code only (so not including time
spent executing other processes, running database queries, etc). So yes, time spent executing sqlite
queries would only be included on Windows. If your queries are causing the order of magnitude
difference in execution time your problem has nothing to do with PHP!
> I've got a windows user whose scripts are actually running out of time, so I may have to
> add a php_value to the apache config to crank up the time limit.
Rather than doing that I would advise the user to modify their script to keep calling set_time_limit
at regular intervals to extend the time allowed. Doing that will ensure that if the script actually
gets stuck in a loop or gets blocked by something external the script will be killed and the effect
will be minimal. When I’m doing something like processing large data files I’ll call
set_time_limit on every iteration of the loop with a reasonable maximum time for each chunk of the
file.
-Stuart
--
Stuart Dallas
3ft9 Ltd
http://3ft9.com/