|
|
 |
set_time_limit (PHP 3, PHP 4, PHP 5) set_time_limit -- Limita el tiempo máximo de
ejecución Descripciónvoid set_time_limit ( int segundos )
Establece el número de segundos en los que se permite
correr a un script. Si este valor es alcanzado, el script
devuelve un error fatal. El lÃmite predeterminado es 30
segundos o, si existe, el valor
max_execution_time definido en php.ini. Si
segundos se establece a cero, no se impone
lÃmite alguno.
Cuando es llamada, la función
set_time_limit() restablece el contador de
tiempo de espera desde cero. En otras palabras, si el tiempo de
espera es el valor predeterminado de 30 segundos, y 25 segundos
al interior de la ejecución del script se realiza una
llamada como set_time_limit(20), el script correrá por un
total de 45 segundos antes de que se alcance el tiempo de espera.
| Aviso |
set_time_limit() no tiene ningún
efecto cuando PHP corre en safe mode. No hay alternativa
más que deshabilitar el modo seguro o modificar el
lÃmite de tiempo en php.ini.
|
Nota:
La función set_time_limit() y la
directiva de configuración max_execution_time solo
afectan el tiempo de ejecución del script
mismo. Cualquier cantidad de tiempo utilizado en alguna
acción que ocurra por fuera de la ejecución del
script, tal como llamadas de sistema usando
system(), operaciones de secuencias,
consultas de bases de datos, etc. no es incluido al determinar
el tiempo máximo que el script ha estado corriendo.
Vea también: las directivas ini max_execution_time y
max_input_time.
konrads dot smelkovs at gmail dot com
01-Apr-2006 06:35
If you are streaming large data from database, it is counted towards the max exec time.
jatin at jatinchimote dot com
01-Mar-2006 10:54
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
Cleverduck
28-Feb-2006 01:36
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.
rycardo74 at gmail dot com
24-Nov-2005 10:52
this work to fine html streaming AND time pass limit
<?
header('Content-type: text/plain');
echo date("H:m:s"), "\n";
set_time_limit(30);
for ($i = 0; $i < 1000; $i++)
{
echo date("H:m:s"),"\n";
for ($r = 0; $r < 100000; $r++){
$X.= tan(M_LNPI+log(ceil( date("s")*M_PI*M_LNPI+100)));
}
ob_flush();
flush();
}
echo "work! $x";
?>
Balin 4 ever
G8 = lies
free your mind
nytshadow
14-Jul-2005 08:15
This tripped me up for a bit until I read through the ini settings. When doing file uploads, max_execution_time does not affect the time even though the error message indicates the script has exceeded the maximum execution time. The max_input_time determines how much time PHP will wait to receive file data. The default setting is 60 seconds so while I had my max_execution_time set to 300, the script would fail after 60 seconds but report that it had exceeded the max execution time of 300.
niam dot niam at gmail dot com chebatron at gmail dot com
24-Jun-2005 06:43
<?php
echo date("H:m:s"), "\n";
set_time_limit(30);
for ($i = 0; $i < 100; $i++)
{
sleep(10);
echo date("H:m:s"),"\n";
}
echo "Done!";
?>
Guys! This script runs 100*10 seconds +- few microseconds for circle and output.
But not promissed 30 seconds!!!
set_time_limit sets CPU time! Texted on *NIX.
Sjoerd van der Hoorn
21-Jun-2005 03:08
When using the set_time_limit() function, the browser will stop after about 30 seconds if it does not get new data. To prevent this, you can send every 10 seconds a little snippet of data (like a single character) to the browser. The code below is tested with both Internet Explorer and Firefox, so it will stay online all the time.
You should also create a file called chatdata.txt which contains the last thing said on a chatbox. Please note that you can also replace this function with a MySQL or other database function...
<?php
set_time_limit(900);
ob_start();
$message = "First test message";
$oldmessage = "bla";
while (true)
{
$timeoutcounter = 0;
while ($message == $oldmessage)
{
if ($timeoutcounter == 10)
{
echo ".";
flush();
ob_flush();
$timeoutcounter = 0;
}
sleep(1);
$message = file_get_contents("chatdata.txt");
$timeoutcounter++;
}
$oldmessage = $message;
echo "<script>window.alert(\"" . $message . "\");</script>";
flush();
ob_flush();
}
?>
eric pecoraro at shepard com
06-Jun-2005 12:57
I was having trouble with script timeouts in applications where the user prompted long running background actions. I wrote this cURL/CLI background script that solved the problem when making requests from HTTP.
<?php
if ( !function_exists('curl_setopt') OR !function_exists('curl_setopt') ) {
echo 'Requires cURL and CLI installations.' ; exit ;
}
$script = array_pop(explode('/',$SCRIPT_NAME)) ;
$script_dir = substr($SCRIPT_NAME,0,strlen($SCRIPT_NAME)-strlen($script)) ;
$scriptURL = 'http://'. $HTTP_HOST . $script_dir . "$script" ;
$curlURL = 'http://'. $HTTP_HOST . $script_dir . "$script?runscript=curl" ;
if ( php_sapi_name() == 'cli' ) {
$CLI = true ;
}
if ( $runscript == 'curl' ) {
$cmd = "/usr/local/bin/php ".$PATH_TRANSLATED ; exec($cmd) ;
exit;
}
if ( $post ) {
cURL_prompt($curlURL) ;
echo '<div style="margin:25px;"><title>Background CLI</title>';
echo 'O.K. If all goes well, <b>'.$script.'</b> is working hard in the background with no ' ;
echo 'timeout limitations. <br><br><form action='.$scriptURL.' method=GET>' ;
echo '<input type=submit value=" RESET BACKGROUND CLI "></form></div>' ;
exit ;
}
if ( !$CLI AND !$runscript ) {
echo '<title>Background CLI</title><div style="margin:25px;">' ;
echo '<form action='.$scriptURL.' method=POST>' ;
echo 'Click to run <b>'.$script.'</b> from the PHP CLI command line, in the background.<br><br>' ;
echo '<input type=hidden value=1 name=post>' ;
echo '<input type=submit value=" RUN IN BACKGROUND "></form></div>' ;
exit ;
}
function cURL_prompt($url_path) {
ob_start(); $c=curl_init($url_path);
curl_setopt($c, CURLOPT_TIMEOUT, 2); curl_exec($c);
curl_close($c);
ob_end_clean(); }
?>
Jimmy Wimenta
23-Sep-2004 12:15
Referring the the last 2 comments about whether the duration of sleep() will be counted in execution time, the answer is it depends on the platform. In Linux it does not, while in Windows it does.
nathan
06-Apr-2004 02:04
unless I am doing something stupid, my testing (at least on php 4.3.4) seems to indicate that sleep() does indeed count towards script execution time, contrary to the previous post.
Here is my test code:
for ($i=0; $i < 10; $i++) {
sleep(10);
echo " [$i] ";
}
This will exceed execution time after only 2 loops.
riki1512 at gmx dot de
02-Apr-2004 04:26
The duration of the pause when calling the sleep() function is also not added to script-execution time.
php at mightycpa.com
26-Jun-2003 01:30
You may also need to look at Apache's timeout setting (Win32 version for me), I changed max execution time value in php.ini, and still got stopped by Apache's timeout value in the httpd.conf file.
rsallo at gna dot NOSPAM dot es
30-May-2003 04:28
When you are working with IIS, PHP timeout is valid only when it's lower than script timeout defined by IIS.
IIS 5 has a default timeout of 300 seconds. If you need a higher timeout, you also have to change IIS properties. Otherwise, your server will stop your PHP script before it reaches its own timeout.
| |
|
| Inicio | Acción | Estrategia | Palabras | Puzzles | Solitarios | Foro Trucos |  | Cake Mania Jugadores: 6835 Categoría del juego: Acción Objetivo del juego: Ayuda a Jill a recuperar la pastelería de su abuela llevando su propia pastelería; consigue clientes y gana dinero. |
|  | Rainbow Web Jugadores: 2199 Categoría del juego: Puzzles Objetivo del juego: Rompe un pegajoso hechizo y salva un reino de fantasía en Rainbow Web. Tendrás toneladas de diversión mientras juegas a este mágico desafío para la mente. |
|  | Mahjongg Fortuna Jugadores: 12462 Categoría del juego: Solitarios Objetivo del juego: Velocidad y habilidad mental son las armas más importantes en esta versión de un antiguo juego asiático. Despeja el tablero lo antes posible haciendo clic en las fichas iguales y gánate la fama eterna de la puntuación más alta. |
|  | Chainz 2 Jugadores: 6955 Categoría del juego: Puzzles Objetivo del juego: Entra en el mundo de las combinaciones con Chainz 2: Relinked, emocionante secuela del exitazo del año pasado, Chainz. Gira eslabones y crea combinaciones de 3 ó más. |
|  | Delicious Jugadores: 4405 Categoría del juego: Acción Objetivo del juego: ¿Eres un as de la multitarea? ¿Quieres que tus clientes estén contentos? ¡Pues Delicious es tu juego! Sacia el apetito de los clientes y tenlos contentos; ¡no te arriesgues! |
|  | Bookworm Jugadores: 4568 Categoría del juego: Palabras Objetivo del juego: Junta las letras para formar palabras. ¡Las palabras más largas valen más puntos! |
|  | Zuma Jugadores: 4976 Categoría del juego: Acción Objetivo del juego: Controla el ídolo de la rana de piedra de los antiguos Zuma en este intrigante enigma de acción. ¡Dispara bolas para formar conjuntos de tres, pero si dejas que lleguen a la calavera dorada morirás! |
|  | Jewel of Atlantis Jugadores: 3798 Categoría del juego: Puzzles Objetivo del juego: Descubre la ciudad hundida de la Atlántida y busca valiosos tesoros. Viaja más allá de las profundidades del mar y vive trepidantes aventuras en Jewel of Atlantis. |
|  | Jewel Quest Jugadores: 3727 Categoría del juego: Puzzles Objetivo del juego: Convierte la arena de la antigua selva en oro tan rápido como puedas juntando grupos de 3 elementos. ¡Los grupos más grandes valen más puntos! |
|  | Bejeweled 2 Jugadores: 3659 Categoría del juego: Puzzles Objetivo del juego: Con cuatro modos de juego únicos y fascinantes, nuevas piezas de juego explosivas e imponentes fondos planetarios, Bejeweled 2 es mucho más adictivo que nunca. |
|
|