Bonjour,
Je ne me rappelle plus s'il est possible de créer une page web afin d'avertir les utilisateurs s'il une requête POST ou GET est trop longue et générant un timeout.
Merci
Bonjour,
Je ne me rappelle plus s'il est possible de créer une page web afin d'avertir les utilisateurs s'il une requête POST ou GET est trop longue et générant un timeout.
Merci
Bon,
Mon souci est un peu plus complexe. En fait, une page web n'est pas accessible dans un délai du timeout, on a une erreur 408 (Request Timeout : Le temps d'attente de la réponse du client est écoulé). Mais dans mon cas, c'est un peu différent car j'affiche des informations sur la page au fur et à mesure.
Mais, si au bout de 300 secondes (timeout par défaut), ma page n'est pas complétement affichée, le programme s'arrête.
Comment intercepter la fin du timeout afin de personnaliser un message d'erreur.
Merci
Bonjour ,moi aussi j'ai le même soucis que vous
je veux personnaliser cette page mais je n'arrive pas à faire:
j'ai rédirigé ErrorDocument 408(ds httpd.conf) vers une page d'erreur personnalisée;mais le message fatal error maximum execution time est encore affichée
Alors ,si quelqu'un peut m'aider à faire
Ce n'est pas moi qui arrête la page. Je ne sais pas si c'est apache qui arrête le programme cgi car je n'ai pas pas de page de timeout.
C'est soit le navigateur qui en a marre d'attendre ou bien apache qui arrêt le programme.
Mes tests s'effectuent actuellement sous EasyPHP.
Merci de ton aide
Autre remarque.
J'ai un programme PHP qui lance un programme cgi. Ce dernier affiche quelques informations sur la page puis effectue une requête sur une base de données toutes les toutes les 10 secondes et dort pendant 5 sec (sleep). Si la requête ne donne rien, il recommence la requête, ainsi de suite. Le programme fonctionne correctement. Mais j'ai un cas particulier où le programme va durer ainsi pendant 3 heures environ. Pendant ce temps, rien n'est donc affiché dans la page web. Mais au bout d'un certains temps. Le navigateur firefox met terminé, alors que le programme n'était pas fini. Je n'ai donc pas de message d'erreur, ni de page de timeout. J'ai juste le programme qui a été arrêté par le navigateur (ou apache), je ne sais pas.
C'est différent comme use case : tu veux faire durer un programme 3h, pas qu'Apache envoie un message d'erreur custom.
Dans ce cas, c'est Firefox qui en a marre et qui coupe la connexion, et parce que la connexion est coupée, Apache arrête le traitement PHP. Pour contourner le programme, envoie un caractère à la noix genre un espace après chaque requête, histoire qu'Apache envoie régulièrement des données à Firefox et que ce dernier soit content et ne fasse pas partir la connexion en timeout. Assure-toi aussi que le buffer de sortie de PHP est désactivé, histoire d'être sûr que chaque espace est aussitôt envoyé au navigateur, pas lorsque le buffer est plein.
Soit dit au passage, ce n'est pas génial du tout de procéder de la sorte : le Web n'est pas du tout prévu pour les tâches de longues durées. Il faut plutôt partir sur une autre approche : un programme ordonnancé (par cron ou tout autre mécanisme) qui ne dépend pas d'une connexion pour s'exécuter et qui logue régulièrement dans une table par exemple un état de son avancement, et ton navigateur qui va juste consulter cette table.
Merci pour ta réponse.
En faite, j'ai déjà un système de fifo cron. Depuis ma page web, je récupère des informations des utilisateurs et lance un autre programme. Ce dernier, du moment où il est lancé ne dépend plus de ma page web et tourne tout seul. Mais afin de savoir s'il est terminé, je suis obligé de checker certains champs d'une table SQL qui me renseigneront sur son statut (fini, anomalie, ou en cours), d'où mes requêtes toutes les 10 secondes. En générale, les programmes ne durent pas plus de 30 secondes. Je suis vraiment dans un cas particulier durant 3 heures.
Comment s'assurer que le buffer de sortie de PHP est désactivé ? Je ne me rappelle plus.
Merci
Moi non plus, je ne m'en rappelle plus Peut-être dans php.ini si tu peux le modifier, sinon tu trouveras sûrement en demander à ton moteur de recherche préféré.
De toute façon, à ce niveau, ce n'est pas du php, donc mon souci ne se pose plus en ce qui concerne le buffer .
Bon, j'ai opté pour ta solution avec les espaces. En plus de cela, j'augmente mon sleep à 30 secondes si le programme dure depuis plus d'un certains temps.
Je vais considérer que mon problème est résolu même si l'on a juste trouvé une parade à la question posée .
Merci
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager