Jump to content
dimi3

contourner le temps d'exécution limité

Rate this topic

Recommended Posts

Bonjour,



Mes programmes devant traiter des quantités de données avant affichage, il est fréquent qu'ils décrochent afin de finir (time out...).



N'ayant pas accès au fichier de configuration PHP et l'hébergeur n'étant pas très chaud pour l'augmenter, je me demande s'il y a moyen de contourner le temps-limite par programmation.


Je rêve d'une page qui par exemple, avertirait l'utilisateur du temps limite dépassé et lui proposerait un bouton à cliquer pour poursuivre le travail. Une telle chose est-elle possible ?


Voyez-vous d'autres solutions ?



Je vous remercie de vos idées.


Share this post


Link to post
Share on other sites

La fonction set_time_limit() sert à repousser la durée limite d'exécution d'un script.


Malheureusement elle n'a aucun effet lorsque php tourne en safe_mode, ce qui est vraisemblablement le cas sur un hébergement mutualisé.


Share this post


Link to post
Share on other sites

Bonjour et merci pour votre réaction rapide.



Vous avez raison. C'est pourquoi je cherche une astuce pour que le programme stoppé redémarre et puisse finir son travail.


Share this post


Link to post
Share on other sites

As-tu envisagé d'utiliser un cache php ? Cela pourrait sensiblement diminuer le temps d'exécution.



Mais, par défaut, cette limite est fixée à 30 secondes, sauf si ton hébergeur a réduit cette valeur.


Et ce n'est que le temps CPU utilisé par le script, hors appels systèmes, entrées-sorties... etc. Donc si tu dépasses ce temps, tu devrais peut-être revoir ton script.


Share this post


Link to post
Share on other sites

J'ai regardé un petit peu cette possibilité. Je crois comprendre que cette fonction met en cache un traitement déjà effectué pour le réafficher instantanément plus tard. Mon problème est la longueur du traitement lui-même. La mise en cache d'un traitement inachevé en raison de la limite de temps d'exécution ne me paraît pas résoudre le problème. Je me trompe ?


Edited by dimi3

Share this post


Link to post
Share on other sites

Si tu peux découper le traitement en plusieurs morceaux, tu peux faire une partie du traitement, puis un redirect vers le même script avec un paramètre différent qui veut dire qu'il faut faire la deuxième partie, et ainsi de suite. Il te faudra probablement stocker des résultats intermédiaires quelque part.



Ceci étant dit, un serveur web (mutualisé en plus) ne me paraît pas vraiment l'endroit idéal pour une tâche de ce genre...



Jacques.


Share this post


Link to post
Share on other sites

Merci pour vos idées qui m'ont conduit à lire 1000 lignes par 1000 lignes les fichiers textes à traiter. Un petit coup de javascript (window.location) relance le programme autant de fois qu'il le faut. Le nombre de relances est calculé préalablement par une simple division (nombre d'enregistrements du fichiers-texte / 1000) ( + 1 s'il y a un reste). Décrémentation à chaque relance. Les résultats s'ajoutent dans un fichier texte (mode "a").La limite d'exécution imposée par l'hébergeur est respectée... Le top !



Encore merci pour les pistes proposées...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...