What Is The PHP Time Limit?
The PHP Time Limit is the amount of time that your site will spend on a single operation before timing out. PHP
will timeout and exit with the following error once it reaches the maximum allowed time for it to execute your scripts;
Fatal error: Maximum execution time of 30 seconds exceeded in yourscript.php
You can avoid this error by increasing the maximum execution time for PHP. This can be set globally or from within your PHP scripts via any of these options;
1. Contact Your Host
Increasing the PHP Time Limit is complex and the process that differs from hosts to hosts. So it is always better to get it done from someone who knows it well. So just get in touch with your hosting company and they will be happy to do it for you.
2. Configuring php.ini
PHP time limit can be configured in php.ini, open it up and change the following line to something more suitable:
max_execution_time = 300
NOTE: PHP time limit is measured in seconds!
In order to enable PHP time limit, Apache needs to be restarted after php.ini has been edited.
3. Setting PHP time limit within wp-config.php
This is basically the same as the previous solution, but it’s actually a function that you call from your PHP
script. It’s a general function to override any configuration options set in your PHP
‘s configuration file and will only affect the execution of the scripts that call the function.
When placed at the start of your
PHP
script, the following function call will allow it to run for 300 seconds [5 minutes].
set_time_limit[300];
4. Modifying the .htaccess file
Some of you might have the .htaccess file where you can simply add / edit this line of code to increase the time limit.
max_execution 300
Create stunning Blog for just $59
Buy now
[PHP 4, PHP 5, PHP 7, PHP 8]
set_time_limit — Limits the maximum execution time
Description
set_time_limit[int $seconds
]: bool
When called, set_time_limit[] restarts the timeout counter from zero. In other words, if the
timeout is the default 30 seconds, and 25 seconds into script execution a call such as set_time_limit[20]
is made, the script will run for a total of 45 seconds before timing out.
Parameters
seconds
The maximum execution time, in seconds. If set to zero, no time limit is imposed.
Return Values
Returns true
on success, or false
on failure.
Notes
Note:
The set_time_limit[] function and the configuration directive max_execution_time only affect the execution time of the script itself. Any time spent on activity that happens outside the execution of the script such as system calls using system[], stream operations, database queries, etc. is not included when determining the maximum time that the script has been running. This is not true on Windows where the measured time is real.
kexianbin at diyism dot com ¶
8 years ago
Both set_time_limit[...] and ini_set['max_execution_time',...]; won't count the time cost of sleep,file_get_contents,shell_exec,mysql_query etc, so i build this function my_background_exec[], to run static method/function in background/detached process and time is out kill it:
my_exec.php:
jatin at jatinchimote dot com ¶
16 years ago
If you set the number of seconds to a very large number [not many ppl do that, but just in case] then php exits with a fatal error like :
Fatal error: Maximum execution time of 1 second exceeded in /path/to/your/script/why.php
[EDIT by danbrown AT php DOT net: This is due to the limit of 32-bit signed integers.]
ravenswd at gmail dot com ¶
13 years ago
Unfortunately, a script which gets into an infinite loop can produce an alarming amount of output in only a few seconds. I was attempting to debug a script, and I added
to the beginning of the script. Unfortunately, even two seconds of run time produced enough output to overload the memory available to my browser.
So, I wrote a short routine which would limit the execution time, and also limit the amount of output returned. I added this to the beginning of my script and it worked perfectly:
agvozden at gmail dot com ¶
12 years ago
If you got something like:
msg: set_time_limit[] [function.set-time-limit]: Cannot set time limit in safe mode
try this:
bjfieldNO at SPAMgmail dot com ¶
15 years ago
Timeouts after five minutes in IIS on Windows are caused by an inherited CGI Timeout value of 300 seconds. This is not a PHP problem. The fix is to add custom values for the files or directories that need longer to run.
In IIS 5.0 or 7.0 [beta as of this note], you can change this value on a fairly granular level using IIS Manager, under [roughly] YOURSITE -> Properties -> Home Directory -> Configuration [button] -> Options, but in IIS 6.0, this functionality is turned off [!], so you have to get into the Metabase.
Find the site number in Metabase Explorer [e.g., 12345678], then from CMD prompt:
[get to the scripts dir]
cd C:\Inetpub\AdminScripts
[this for each subdirectory from off the site root]
cscript adsutil.vbs CREATE W3SVC/12345678/root/"MY SUBDIRECTORY" IIsWebDirectory
[this for the file in question]
cscript adsutil.vbs CREATE W3SVC/12345678/root/"MY SUBDIRECTORY"/ILikeToTimeOut.php IIsWebFile
[this to set the timeout]
cscript adsutil.vbs set W3SVC/12345678/root/"MY SUBDIRECTORY"/ILikeToTimeOut.php/CGITimeout "7200"
Note: "7200" is 2 hours in seconds, but can be whatever.
I derived the solution above from this fine article:
//www.iis-resources.com/modules/AMS/article.php?
storyid=509&page=3
Silver_Knight ¶
12 years ago
if you are running a script that needs to execute for unknown time, or forever.. you may use
set_time_limit[0];
.....
...
..
.
and at the end of the script use flush[] function to tell phpto send out what it has generated.
Cleverduck ¶
16 years ago
Regarding what 'nytshadow' said, it's important to realize that max-execution-time and the set_time_limit functions measure the time that the CPU is working on the script. If the script blocks, IE: for input, select, sleep, etc., then the time between blocking and returning is NOT measured. This is the same when running scripts from the command line interface. So if you've got a log parser written in PHP that tails a file, that program WILL fail eventually. It just depends how long it takes to read in enough input to process for 30 seconds.
If you're writing a command line script that should run infinitely, setting max-execution-time to 0 [never stop] is HIGHLY recommended.
BW ¶
13 years ago
If you use Apache you can change maximum execution time by .htaccess with this line
php_value max_execution_time 200
mingalevme at gmail dot com ¶
10 years ago
If you're using PHP_CLI SAPI and getting error "Maximum execution time of N seconds exceeded" where N is an integer value, try to call set_time_limit[0] every M seconds or every iteration. For example: