[PHP] Répondre à l'erreur "Maximum execution time"

Bonjour,

Esti-il possible, un peu comme en Java avec les Exceptions, de prévoir une erreur (ici, de type Maximum execution time) et de pouvoir effectuer une action lorsqu’elle se produit ?

En gros j’ai un script qui peut être long, mais qui ne fait son travail qu’une fois. C’est à dire que si l’erreur Maximum execution time est detectée, je lance un simple reload de la page et le script reprendra là ou il en était, tout ceci étant transparent pour l’utilisateur.

Est-ce possible ?

Regarde la:

Erreur php

Apparement, il n’existe pas d’equivalent du try catch…

Regarde la:

Erreur php

Apparement, il n’existe pas d’equivalent du try catch…

Tu as bien :

http://fr.php.net/manual/fr/function.set-error-handler.php

Mais qui ne te permettras pas de catcher cette erreur.

Php5 gère les exceptions, mais pareil :slight_smile: pas de gestion du cas "max executed time"

Tu peux par contre tenter d’utiliser une fonction de fin de script :

http://fr.php.net/manual/fr/function.regis…wn-function.php

en php5 tu as le try catch

http://www.php.net/manual/fr/language.exceptions.php

Yep, ce que j’ai dis :slight_smile:

Mais le max exec time, c’est une erreur un peu spéciale :slight_smile: c’est comme si tu déclares pas une fonction avant de t’en servir : tu te prend une belle erreur dans la tronche, et fini le script.

(par contre, je trouve marrant que tu puisses définir un __call() pour les méthodes php5 ex: $foo->dqsqdsdsq() appellera __call() automatiquement si la méthode n’existe pas alors que tu ne peux pas faire la même chose pour les fonctions de base)

les fonctions de base ne sont pas vraiment dans une optique objet

ps : j’avais meme pas lu ton post c pour dire lol

EDIT :

et un truc de barge a base de popen avec un timer qui coupe juste avant le nombre de seconde ?

pcntl_fork
pcntl_waitpid()

comme dans le bon vieux temps de la prog sous nix on fork et on attend que le fils ait finit !!! sauf si il met trop de temps

Mauvaise idée je dirais :slight_smile:

  1. pas portable, et "pas portable" sux
  2. http://fr.php.net/manual/fr/ref.pcntl.php

Donc c’est certain de pas fonctionner

dommage c t le genre de truc vraiment tres laid a dev :slight_smile:

bon reste le timer javascript lancé dans le header et qui redirige la page sauf si le onload a annulé le timer entre temps…

Vi, ou faire un script qui timeout pas :slight_smile:

Ou alors tenter register_shutdown_function.

Je vais regarder tout ça, merci à tous. : )

sinon, tu peux découper ton script en plusieurs morceaux avec appel par header
si tu as une grosse boucle, tu remplace par un appel récursif du script … :slight_smile:

Tu sais que la récursivité c’est tout ce qu’il y a de pire en terme de perf? Surtout en php… t’as pas non plus une hauteur de pile exponentielle :o

tu peux aussi creer un cluster qui se repend par propagation sur tout le net ou programmer un virus qui utilise les ressource processeur (mais que des pc intel) des victimes

Quaz> gné? Je veux dire, s’il a un Max exec time, et qu’il fait de la récursivité, faut voir s’il peut pas résoudre ça de manière itérative. Maintenant, la récursivité, c’est bien. Mais j’en suis pas à “mangez en”.

t inquiete c juste un petage de plomb pour dire…