NouveauBlack Friday : 50 % de réduction sur votre premier paiement
Dépannage WordPress

Durée maximale d'exécution dépassée

PHP a arrêté un script qui avait été exécuté plus longtemps qu'il n'est permis. La limite a fait son travail; la question est de savoir si le travail appartenait à une requête web.

Fatal error: Maximum execution time of 30 seconds exceeded

Réponse rapide

Une page qui a besoin de plus de trente secondes a un problème à résoudre; une importation qui a besoin de dix minutes doit courir quelque part un timeout ne s'applique pas.

Diagnostic

Les causes les plus probables d’abord.

Parcourez la liste dans l’ordre. Vérifiez chaque cause avant de modifier quoi que ce soit : les correctifs diffèrent et une supposition coûte plus cher qu’une commande.

CauseComment vérifierCorrectif
Un travail en vrac dans le navigateurL'échec suit une action que vous avez commencée en wp-admin et s'arrête au même moment écoulé chaque tentative.Exécutez-le à partir du WP-CLI, où la limite ne s'applique pas, ou dans des morceaux qui enregistrent les progrès et reprennent.
Une mise à jour ou une installation sur un lien lentL'échec se produit pendant le téléchargement plutôt que pendant le traitement, et les paquets plus grands échouent pendant que les petits réussissent.Augmentez la limite pour le contexte d'administration, ou installez à partir du système de fichiers au lieu de sur HTTP.
Un appel lent à l'extérieur dans une pageUne URL front-end ordinaire est affectée et le site dépend d'un service tiers qui a une mauvaise journée.Convoquez la requête sortante avec son propre timeout et cachez le résultat, plutôt que d'élever la limite de script autour.
La limite s'applique lorsque vous ne vous y attendiez pasLa valeur diffère entre la CLI, la requête web et cron - chaque contexte peut porter une autre.Changez-le là où le travail fonctionne réellement. Une limite de web augmentée ne fait rien pour un travail exécuté sous cron.
Une boucle infinieLe temps est passé sans réseau et sans activité de base de données, et le même chemin de code se répète dans un profileur.Fixer la boucle. L'augmentation de la limite ici signifie seulement que le site est bloqué pour plus longtemps avant qu'il abandonne.
Guide

Corriger l’erreur, étape par étape.

Les commandes supposent un accès à WP-CLI et au terminal. Si vous n’en disposez pas, chaque étape explique comment procéder depuis le tableau de bord ou via SFTP.

  1. Pour savoir quelle limite s'applique

    La ligne de commande et la requête web ne partagent généralement pas de valeur.

    php -i | grep max_execution_time
    php -r 'echo ini_get("max_execution_time"), PHP_EOL;'
  2. Déplacer le travail vers un endroit où la limite ne s'applique pas

    WP-CLI fonctionne sans horloge murale au-dessus, c'est pourquoi de longs travaux y appartiennent.

    wp plugin install some-plugin --activate
  3. Si elle doit courir dans une requête, n'en soulevez que pour ce chemin

    Portée au contexte administratif plutôt qu'à tout ce que le site sert.

    wp config set WP_MEMORY_LIMIT '256M'
  4. Vérifiez si le temps va partir

    Si le script attend le serveur de quelqu'un d'autre, la limite n'est pas la chose à changer.

    wp eval 'var_dump( wp_remote_get( "https://example.com", [ "timeout" => 5 ] ) );'
  5. Confirmez qu'il se termine maintenant

    Faites le même travail et regardez-le complet plutôt que de supposer qu'il le fera.

    time wp cron event run --due-now
Sur MagicWP

Ce que la plateforme prend en charge.

Les limites d'exécution sont levées pour les contextes admin et cron et laissés là où ils appartiennent pour les requêtes web, de sorte qu'une importation a de la place pour terminer sans permettre également une page publique à exécuter pendant des minutes. WP-CLI est disponible sur chaque plan pour les tâches qui n'auraient jamais dû être dans un onglet de navigateur, et le travail programmé fonctionne sur un vrai calendrierr plutôt que dans la charge de page de quelqu'un.

Questions fréquentes

Questions fréquentes.

Pourquoi la limite est de trente secondes ?
C'est la valeur par défaut de PHP pour les requêtes web, et pour une requête web, c'est généreux. Aucun visiteur n'attend trente secondes. La limite est un problème seulement lorsqu'un travail qui ne devrait pas être dans une requête se trouve en une seule.
La limite s'applique-t-elle au WP-CLI?
Non. La ligne de commande PHP fonctionne sans limite de temps d'exécution par défaut, c'est exactement pourquoi les importations, les exportations et les migrations sont présentes là.
Je l'ai soulevé et le travail échoue toujours au même moment.
La limite que vous avez levée n'est pas celle qui est appliquée. Les requêtes Cron et web peuvent porter différentes valeurs, et un proxy en avant peut s'éteindre avant PHP.
Est-ce le même qu'un 504 ?
Related mais pas la même chose. Ceci est PHP s'arrêtant lui-même; un 504 est le serveur Web qui abandonne sur PHP. Un travail long peut produire soit, selon l'horloge qui s'épuise en premier.
Erreurs associées

Si le problème vient d’ailleurs.

Ces erreurs peuvent se présenter de façon similaire dans le navigateur.