Fermer2
NilLe 10/11/2016 à 12:21
Bon, j'avais d'abord pensé envoyer ce message uniquement à squale, mais en fait je me dis que vous avez peut-être un avis sur le sujet...

J'ai une question sur le fonctionnement de max_execution_time (à laquelle je ne trouve pas de réponse exacte, sauf quelques pistes ici : http://www.binarytides.com/php-set-time-limit/ )
J'utilise des scripts PHP pour réaliser des opérations assez lourdes (synchronisations, ETL...) qui peuvent durer très longtemps (parfois plusieurs dizaines de minutes, voire plusieurs heures).

Mon php.ini indique un max_execution_time à 30 secondes. Dans la pratique, l'exécution du script (en CLI ou via un navigateur) dure beaucoup plus que ça (une quarantaine de minutes) sans qu'il n'y ait de message d'erreur.
Il se trouve que j'ai eu à ajouter des contrôles complémentaires en début de script (ça me le rallonge d'au moins une dizaine de minutes). Et paf, je me trouve en erreur pour cause de dépassement du max_execution_time.

Je vais donc changer mon paramétrage, mais j'aimerais savoir pourquoi :
- ça ne partait pas en erreur avant alors que j'avais un script qui dépassait déjà largement les 30s (même en retirant les requêtes SQL et LDAP, les traitements cumulés durent plus de 30s)
- à présent, ça coupe bien avant la durée d'exécution précédente (ça doit couper au bout de 20 minutes, alors que j'étais à une 40aine).

Est-ce que quelqu'un sait comment est calculé le temps d'exécution ? Sur le fichier de script en cours ? Sur la fonction en cours ? Sur l'intégralité de l'exécution depuis le premier appel ?

J'aimerais savoir si quelqu'un connaissait une technique permettant d'interrompre proprement l'exécution d'un script depuis un autre script (par exemple d'avoir une page web permettant de monitorer et d'interrompre l'exécution de mon long script), sans passer par un fichier de verrouillage et un kill système.