Erreur fatale: dépassement du temps d'exécution maximal de 30 secondes

397

Je télécharge un fichier JSON à partir d'une source en ligne et et lorsqu'il s'exécute dans la boucle, j'obtiens cette erreur:

Erreur fatale: le temps d'exécution maximal de 30 secondes a été dépassé dans C: \ wamp \ www \ temp \ fetch.php sur la ligne 24

Harsha MV
la source
11
dépassement possible du temps d'exécution maximal de 60 secondes dépassé, ce qui est déjà un double de trois autres. Veuillez utiliser la fonction de recherche avant de demander.
Gordon
"La fonction set_time_limit () et la directive de configuration max_execution_time n'affectent que le temps d'exécution du script lui-même. Tout temps consacré à une activité qui se produit en dehors de l'exécution du script, comme les appels système utilisant system (), les opérations de flux, les requêtes de base de données, etc. . n'est pas inclus lors de la détermination de la durée maximale d'exécution du script. Ce n'est pas vrai sous Windows "De la documentation PHP
Jacob Sánchez

Réponses:

722

Votre boucle pourrait être sans fin. Si ce n'est pas le cas, vous pouvez prolonger le temps d'exécution maximal comme ceci:

ini_set('max_execution_time', 300); //300 seconds = 5 minutes

et

set_time_limit(300);

peut être utilisé pour prolonger temporairement le délai.

Michiel Pater
la source
95
set_time_limit (300) peut être utilisé pour prolonger temporairement le délai.
Omn
Est-ce défini uniquement pour ce script ou affectera-t-il tous les autres scripts exécutés après celui-ci sur le même serveur?
Rao
1
@Rao oui, ce ne sera que pour ce seul script. Pour le faire pour tous les scripts, vous devez le changer dans le fichier php.ini. vous pouvez également faire set_time_limit (0); si vous voulez que le script s'exécute pour toujours, ou pour une longue période
Haseeb
31
ini_set ('max_execution_time', 0); // pas de limite
Junaid Atari
3
@sangam Je dirais que c'est la meilleure pratique, de garder cette limite aussi basse que possible tout en autorisant une certaine quantité de tampon supplémentaire. Pour des raisons de sécurité, je ne voudrais pas l'éteindre complètement. Elle doit être définie comme raisonnable. En fait, je l'ai défini sur deux fois le temps nécessaire à l'exécution de mon script le plus long sous un niveau de stress serveur moyen. Mais cela pourrait toujours échouer. La meilleure pratique consiste donc également à traiter séparément les problèmes de dépassement de délai pour les scripts longs.
Hafenkranich
185

J'ai eu le même problème et l'ai résolu en modifiant la valeur du paramètre max_execution_timedans php.ini, comme ceci:

max_execution_time = 360      ; Maximum execution time of each script, in seconds (I CHANGED THIS VALUE)
max_input_time = 120          ; Maximum amount of time each script may spend parsing request data
;max_input_nesting_level = 64 ; Maximum input variable nesting level
memory_limit = 128M           ; Maximum amount of memory a script may consume (128MB by default)

J'espère que cela pourrait vous aider.

Güilber J. Castillo
la source
1
Pour une raison quelconque, ini_set ne fonctionne pas, mais cela aide à coup sûr!
gabrjan
php.inipeut être trouvé dans /etc/php5/apache2/php.ini.... J'utilise ubuntu 13.04 ...
Enissay
J'ai eu le même problème lors de l'installation de moodle sur wamp, mais j'ai résolu la configuration du fichier php.ini
Muhammad Irfan
1
Besoin de redémarrer apache après le changement de php.ini
spideringweb
[php7] - sudo nano /etc/php/7.0/apache2/php.ini
Chris Lambrou
46

Toutes les réponses ci-dessus sont correctes, mais j'utilise un moyen simple pour l'éviter dans certains cas.

Mettez simplement cette commande au début de votre script:

set_time_limit(0);
Massa
la source
9
Ce n'est pas du tout recommandé
je suis la personne la plus stupide du
1
La limite de temps désactivée ne protège pas contre les boucles infinies, alors définissez toujours une limite (supérieure).
bimlas
@IamtheMostStupidPerson Pourquoi pas? Si vous l'utilisez comme hôte local
Fernando Torres
23

J'ai rencontré ce problème lors de la mise à niveau vers WordPress 4.0 . Par défaut, WordPress limite le temps d'exécution maximal à 30 secondes.

Ajoutez le code suivant à votre fichier .htaccess sur votre répertoire racine de votre installation WordPress pour contourner la valeur par défaut.

php_value max_execution_time 300  //where 300 = 300 seconds = 5 minutes
Fahim Hossain
la source
18

Modifier php.ini

Trouvez cette ligne:

max_execution_time

Modifiez sa valeur à 300:

max_execution_time = 300

300 signifie 5 minutes de temps d'exécution pour la requête http.

Jamil Ahmed
la source
16

Votre script arrive à expiration. Jetez un œil à la fonction set_time_limit () pour augmenter le temps d'exécution. Ou profilez le script pour le faire fonctionner plus rapidement :)

tlenss
la source
1
@HarshaMV Il signifie utiliser un profil de performance pour déterminer pourquoi le script est lent au début et optimiser votre code pour améliorer le temps d'exécution. Cela peut être utile ou non, selon le goulot d'étranglement (CPU vs E / S disque vs réseau).
Dan Bechard
12

si tout ce qui précède n'a pas fonctionné pour vous, ajoutez un .htaccessfichier dans le répertoire où se trouve votre script et mettez-le à l'intérieur

<IfModule mod_php5.c>
php_value post_max_size 200M
php_value upload_max_filesize 200M
php_value memory_limit 300M
php_value max_execution_time 259200
php_value max_input_time 259200
php_value session.gc_maxlifetime 1200
</IfModule>

c'est ainsi que j'ai résolu mon problème, ini_set('max_execution_time', 86400);ni set_time_limit(86400)résolu mon problème, mais la méthode .htaccess l'a fait.

Nassim
la source
1
Cela fonctionne dans mon cas. Je vous remercie. Remplacez M par G pour GB
Web_Developer
11

Nous pouvons résoudre ce problème de 3 manières différentes.

1) Utilisation du fichier php.ini

2) Utilisation du fichier .htaccess

3) Utilisation du fichier Wp-config.php (pour Wordpress)

KarSho
la source
8

Vous pouvez supprimer la restriction en la mettant à zéro en ajoutant cette ligne en haut de votre script:

<?php ini_set('max_execution_time', 0); ?>
Mwangi Thiga
la source
7

Suivez le chemin /etc/php5(your php version)/apache2/php.ini.

Ouvrez-le et définissez la valeur de max_execution_timesur celle souhaitée.

Suchit kumar
la source
Sur certains fournisseurs d'hébergement, vous devrez peut-être définir sur /home/[usernameername//php/7.0/phprc
expertCode
7

Vérifiez peut-être toute chose que vous avez modifiée dans le fichier php.ini. Par exemple, j'ai changé le "; intl.default_locale =" en "; intl.default_locale = en_utf8" afin d'activer l '"Internationalization extension (Intl)" sans ajouter le "extension = php_intl.dll" puis cette même erreur s'est produite. Je suggère donc de vérifier les erreurs similaires.

Mike G
la source
5

Augmentez le temps d'exécution de votre script en ajoutant la ligne suivante en haut du script PHP.

ini_set('max_execution_time', 120); //120 seconds = 2 minutes

Référence tirée de Augmenter le temps d'exécution du script PHP

JoyGuru
la source
5

Pour étendre votre, max_execution_timevous pouvez utiliser soit ini_setou set_time_limit.

// Set maximum execution time to 10 seconds this way
ini_set('max_execution_time', 10);
// or this way
set_time_limit(10);

!! Mais sachez que les deux fonctions redémarrent également le décompte du temps que le script a déjà pris pour s'exécuter

sleep(2);
ini_set('max_execution_time', 5);

register_shutdown_function(function(){
    var_dump(microtime(true) - $_SERVER['REQUEST_TIME_FLOAT']);
});

for(;;);

//
// var_dump outputs float(7.1981489658356)
//

donc si vous voulez définir la durée maximale exacte d'exécution du script, votre commande doit être la première.

Les différences entre ces deux fonctions sont

  • set_time_limit ne retourne pas d'informations si elle a réussi, mais il enverra un avertissement en cas d'erreur.
  • ini_setretourne l'ancienne valeur en cas de succès, ou false en cas d'échec sans aucun avertissement / erreur
Buksy
la source
5

Vous pouvez le faire facilement avec WHM. Je dois juste:

WHM -> Configuration du service -> Configuration PHP

éditeur-> max_execution_time=30

(30 est le changement par défaut à la valeur que vous voulez)

payal
la source
2

J'ai le même problème sur le site WordPress, j'ai ajouté un fichier .htaccess, puis ça fonctionne bien pour moi.

php_value max_execution_time 6000000
Ankit K Gupta
la source
0

J'ai apporté quelques modifications dans mon cas dans: xampp \ phpMyAdmin \ bibliothèques \ config.default.php

j'ai recherché: $cfg['ExecTimeLimit'] et changer la valeur à droite ...

Vous pouvez remplacer la valeur de droite par une valeur supérieure, comme «5000». et il fonctionne.

Imad Ullah
la source