Maison  >  Article  >  développement back-end  >  Comment résoudre l'erreur lorsque l'exécution de PHP expire pendant 30 secondes

Comment résoudre l'erreur lorsque l'exécution de PHP expire pendant 30 secondes

小云云
小云云original
2018-03-13 14:08:5114110parcourir
Manuel recommandé : Manuel d'auto-apprentissage complet de PHP

Lorsque vous effectuez un programme de scraping, php reste vide pendant longtemps, puis Le message d'erreur suivant apparaît :

Fatal error: Maximum execution time of 30 seconds exceeded in ......

C'est très simple, cela signifie que le temps d'exécution du script dépasse la limite supérieure de 30 secondes.

Cette erreur a souvent été rencontrée dans le passé, généralement en ajoutant set_time_limit(0) directement à l'en-tête de la page. Aujourd'hui, je résume spécialement la méthode de gestion de cette erreur.

Après avoir consulté les informations pertinentes, les spécialistes des didacticiels d'introduction à PHP disposent essentiellement de trois manières de gérer cette erreur.

(1) Modifier le fichier de configuration php fichier php.ini (Si ce fichier est installé par défaut, il se trouve sous /etc/)

Trouver le php. ini, Recherchez ensuite dans ce fichier :

max_execution_time = 30 ; cette ligne, définissez le nombre 30 sur la valeur souhaitée, en secondes.

(Vous pouvez également le modifier directement en : max_execution_time=0;//No limit) Notez que vous devez redémarrer le serveur après avoir effectué cette modification.

Par exemple, si vous avez Apache, utilisez le service httpd restart

(2) Utilisez la fonction ini_set()

Pour ceux qui ne peuvent pas modifier php.ini Pour les amis, vous pouvez utiliser la fonction ini_set() pour modifier la valeur de votre limite de temps d'exécution maximale. Ajoutez le code suivant en haut du programme :

ini_set('max_execution_time','100');

Le paramètre ci-dessus est de 100 secondes, vous pouvez également définir sur 0, il n'y a alors aucune limite sur le temps d'exécution.

(3) Utilisez la fonction set_time_limit()

et ajoutez : set_time_limit(100); réglé sur 100 secondes, bien sûr, il peut également régler le paramètre sur 0, la même signification que ci-dessus.

Description spéciale de la fonction set_time_limit : void set_time_limit ( int $seconds ) La fonction de cette fonction est de définir le temps autorisé pour l'exécution du script, en secondes.

Si ce paramètre est dépassé, le script renvoie une erreur fatale.

La valeur par défaut est 30 secondes, ou la valeur définie dans max_execution_time dans php.ini, si cette valeur existe. Lorsque cette fonction est appelée, set_time_limit() redémarre le compteur de délai d'attente à zéro.

En d'autres termes, si le délai d'expiration par défaut est de 30 secondes et que set_time_limit(20) est appelé lorsque le script a été exécuté pendant 25 secondes, alors la durée totale pendant laquelle le script peut s'exécuter avant l'expiration est de 45 secondes. Cette fonctionnalité ne prend pas effet lorsque PHP s'exécute en mode sans échec.

Il n'y a pas d'autre moyen que de désactiver le mode sans échec (en désactivant safe_mode dans php.ini) ou de modifier la limite de temps dans php.ini.

Cas :

Si le mode sans échec n'est pas activé, réglez la durée d'exécution du programme sur 25 secondes.

Par exemple :

if(!ini_get('safe_mode')){
    set_time_limit(25);
}
Articles connexes recommandés  :
1.Quel est le moyen de timeout php
2 . Comment résoudre le délai d'expiration de l'interface de requête PHP
Recommandations vidéo associées :
1.
Recommandations associées :

Méthode d'implémentation PHP pour l'exécution de programmes externes
Explication détaillée du code d'implémentation de PHP exécutant des programmes externes
50 conseils pour améliorer l'efficacité de l'exécution de PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn