PHP max_execution_time, quelle est la meilleure mélodie pour les gros files téléchargés

J'ai un WordPress installé et j'utilise un formulaire Web pour download des images sur mon site Web. Le formulaire Web permettant à l'user final de download plus d'un file à la fois.

Le problème est que l'un de mes users a eu cette erreur:

Erreur fatale: Temps d'exécution maximum de 30 secondes dépassé dans / home / ACOUNT /public_html/wp-includes/media.php on line 258

Alors quel est le meilleur réglage pour max_execution_time . Maintenant, comme vous pouvez le voir, il est de 30 secondes. Une idée s'il vous plaît?

Si je définis cela dans une valeur très élevée (c'est-à-dire 600), cela affectera-t-il les performances de mon server?

Remarque: l'user a essayé de download deux files, avec des tailles de 2,96 Mo et 2,9 Mo.

Cordialement Merianos Nikos

Je supposer du path dans le message d'erreur qu'il s'agit d'un système Unix / Linux (MSWindows gère le timeout d'attente de manière très différente ).

Alors que la bande passante (et la latence!) A un impact important sur le time pris pour traiter la request, l'horloge PHP ne démarre que lorsque l'interpréteur PHP est invoqué – ce ne sera que si le server Web a reçu une request complète – c'est-à-dire l'exécution PHP le time et, par conséquent, le timeout d'attente n'a rien à voir avec la durée nécessaire pour que le server Web traite la requête.

Il y a un timeout d'attente en PHP pour déterminer combien de time il devrait consacrer à recevoir des données du server web – max_input_time – et il a été signalé que lorsque cela est dépassé, il indique que max_execution_time a été dépassé! .

Donc …. en supposant un 0 réseau de latence …

  • 00:00 l'user démarre le chargement, l'horloge de temporisation d'apache démarre (mais continuera à être réinitialisé par de nouveaux packages arrivant)

  • 00:10 réception de la request complétée par Apache, requête remise à PHP, début de l'horloge max_input_time

  • 00:11 PHP a lu toute l'input, l'horloge max_input_time est arrêtée, l'horloge max_execution_time démarrée, le script est exécuté

Maintenant, dans une boîte Unix, l'horloge max_execution ne marque que lorsque le PHP s'exécute, le problème est avec la performance / la performance de PHP du script PHP.

Oui, vous pouvez augmenter le time d'exécution maximum sans avoir un impact important ailleurs (bien que le réglage via ini_set () / set_time_limit () sur un script par script soit plus propre qu'un paramètre global). Mais assurez-vous d'utiliser un cache d'opcode, et si le script php tente d'parsingr datatables, faites attention aux problèmes de données / parsingurs.

Il existe deux objectives du paramètre max_execution_time :

  1. Protégez-vous du mauvais code, comme les loops infinies.
  2. Arrêt de PHP à un traitement inutile après avoir supposé que le client a déjà abandonné.

Le réglage à une valeur élevée affectera uniquement les performances si vous avez des scripts qui font l'une des deux choses ci-dessus.

Vérifiez vos journaux d'erreurs pour voir à quelle fréquence (si vous avez) vous dépassez cette période avant de le modifier.

Vous pouvez le modifier sélectivement en utilisant ini_set() dans le code PHP qui nécessite plus de time.

Comme l'indique @Ladadadada, le réglage de max_execution_time pas les performances de votre server. Sinon, si vous ne souhaitez pas définir une valeur trop élevée, je me réfère en personne au paramètre upload_max_filesize .

En connaissant votre bande passante du server et en testant quelques téléchargements, vous pourrez find un taux de téléchargement moyen (réduisez ce taux pour prendre en charge les users ayant un faible niveau de bande). Cela aiderait à définir une valeur réelle de max_execution_time .