2010-02-04 26 views
11

¿Es posible establecer el tiempo máximo de ejecución de la función exec($command)? A veces la ejecución de mi $command dura demasiado tiempo detenerse después de 1 minuto y presentar este error:Establecer el tiempo máximo de ejecución para exec() específicamente

Fatal error: Maximum execution time of 60 seconds exceeded in C:\xampp\htdocs\files.php on line 51

¿Cómo puedo aumentar el tiempo máximo de ejecución de comandos exec()?

if (allow()) { 
    exec($command); 

    if (file_exists($file)) { 
     //exec($makeflv); 
     echo '<script language="javascript" type="text/javascript">window.top.window.aviout(1);</script>'; 

    } else { 
     echo $error; 
     } 

} else { 
    echo $error; 
    } 
+1

Por cierto, esto ha sido respondida por lo menos tres veces: http://stackoverflow.com/questions/1176497/limit-execution-time-of-an-function-or-command-php, http://stackoverflow.com/questions/1928249/php-preventing-max- execution-time-limit-for-mail y http://stackoverflow.com/questions/21 47567/avoid-php-execution-time-limit – Gordon

Respuesta

20

Ver http://php.net/manual/en/function.set-time-limit.php

set_time_limit($seconds) 

Si $second se establece en 0, no se impone ningún límite de tiempo. Tenga en cuenta que debe tener cuidado al eliminar por completo el límite de tiempo. No quiere que ningún bucle infinito consuma lentamente todos los recursos del servidor. Un límite alto, p. 180 es mejor que ningún límite.

Como alternativa, puede ajustar la configuración de tiempo solo para ciertos bloques de código y restablecer el límite de tiempo después de que se haya ejecutado el código de tiempo crítico, p.

$default = ini_get('max_execution_time'); 
set_time_limit(1000); 
... some long running code here ... 
set_time_limit($default); 
+0

ok puse set_time_limit (180) antes de exec ($ command); ¡Parece que funciona! pero después de que el tiempo expire quiero repetir un error ¿cómo hago esto? – robert

+0

Lanzará un error por sí mismo cuando expire el límite de tiempo. Eso es lo que te hizo preguntar tu pregunta en primer lugar. Si desea un controlador de error personalizado, consulte http://php.net/manual/en/function.set-error-handler.php – Gordon

+0

sí, pero cuando envío un formulario, una página process.php comienza con un iframe, i solo para repetir esto: donde el resultado es un error o éxito! – robert

3

En .htaccess puede configurar estos valores:

php_value max_execution_time 1000000 
php_value max_input_time 1000000 

También puede probar esto en la parte superior de su script PHP:

set_time_limit(0); 
Cuestiones relacionadas