J'ai un problème avec mon fichier PHP qui prend plus de 30 secondes à exécuter.
Après la recherche, j'ai ajouté set_time_limit(0);
au début du code, mais le fichier arrive toujours à expiration avec un 500 error
après 30 secondes.
log: PHP Fatal error: Maximum execution time of 30 seconds exceeded in /xxx/xx/xxx.php
safe-mode : off
Vérifiez le php.ini
ini_set('max_execution_time', 300); //300 seconds = 5 minutes
ini_set('max_execution_time', 0); //0=NOLIMIT
Ceci est un vieux fil de discussion, mais je pensais que je posterais ceci link , car cela m'a beaucoup aidé sur ce problème. Essentiellement, ce qu'il dit, c'est que la configuration du serveur peut remplacer la configuration php. De l'article:
Par exemple, mod_fastcgi a une option appelée "-idle-timeout" qui contrôle le temps d'inactivité du script. Donc, si le script ne génère rien pour le gestionnaire fastcgi pendant autant de secondes, fastcgi le terminera. La configuration ressemble un peu à ceci:
Apache <-> mod_fastcgi <-> php processes
L'article contient d'autres exemples et d'autres explications. J'espère que cela aide quelqu'un d'autre.
J'utilise habituellement set_time_limit (30) dans la boucle principale (donc chaque itération de boucle est limitée à 30 secondes plutôt que le script entier).
Je le fais dans plusieurs scripts de mise à jour de la base de données, qui prennent généralement plusieurs minutes pour terminer mais moins d'une seconde pour chaque itération - garder la limite de 30 secondes signifie que le script ne restera pas coincé dans une boucle infinie si je suis assez stupide pour en créer un .
Je dois admettre que mon choix de 30 secondes pour la limite est quelque peu arbitraire - mes scripts pourraient en fait s'en tirer avec 2 secondes à la place, mais je me sens plus à l'aise avec 30 secondes compte tenu de l'application réelle - bien sûr, vous pouvez utiliser la valeur que vous ressentez adapté.
J'espère que cela t'aides!
ini_set('max_execution_time', 300);
utilisez ceci
Checkout this, This is from PHP MANUAL , Cela peut vous aider.
Si vous utilisez PHP_CLI SAPI et obtenez l'erreur "Temps d'exécution maximal de N secondes dépassé" où N est une valeur entière, essayez d'appeler set_time_limit (0) toutes les M secondes ou chaque itération. Par exemple:
<?php
require_once('db.php');
$stmt = $db->query($sql);
while ($row = $stmt->fetchRow()) {
set_time_limit(0);
// your code here
}
?>