Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/05/2015, à 08:51

kleer

PHP : détecter la bonne fin d'un script

Bonjour,

En php j'aimerais faire en sorte que si un script s'est normalement exécuté, une fonction soit appelée automatiquement à la fin,
et que s'il est arrêté par un évènement comme un appel de exit(), die(), une erreur fatale ou autre situation qui ferait stopper le script,
une autre fonction soit appelée.

J'arrive bien à appeler une fonction automatiquement à la fin d'un script en utilisant register_shutdown_function()
Le problème est que je n'arrive pas à détecter une fin "normale"

Exemple :

function ok()
{
    // Actions à faire pour une fin normale
}

function ko()
{
    // Actions à faire pour une fin anormale
}

<?php
    echo "Début";
    exit();

    echo "Ne sera jamais affiché";
    // Pour cet exemple, ko() doit être appelée automatiquement car l’exécution du script est incomplète à cause de l'appel de exit()
?>

<?php
    echo "Début";
    a(); // Erreur fatale, la fonction a() n'est pas définie

    echo "Ne sera jamais affiché";
    // Pour cet exemple, ko() doit être appelée automatiquement car l’exécution du script est incomplète à cause de l'appel d'une fonction indéfinie
?>

<?php
    echo "Début";
    echo "Fin normale";
   
    // Pour cet exemple, ok() doit être appelée automatiquement car l’exécution du script est complète
?>

Es ce que quelqu'un sait comment faire ça ?

Merci de vos réponses

Hors ligne

#2 Le 14/05/2015, à 10:01

tiramiseb

Re : PHP : détecter la bonne fin d'un script

Salut,

la fonction visée par "register_shutdown_function" est-elle exécutée même si l'exécution est incomplète à cause d'une erreur ?
En lisant la doc, on dirait que ça ne marche pas dans ce genre de cas.

À première vue j'ai l'impression que ce que tu veux n'est pas possible...

Hors ligne

#3 Le 14/05/2015, à 10:03

tiramiseb

Re : PHP : détecter la bonne fin d'un script

... note également que, dans la logique globale du développement, quel que soit le langage, "exit()" représente une fin correcte.

Hors ligne

#4 Le 14/05/2015, à 14:04

kleer

Re : PHP : détecter la bonne fin d'un script

Salut,

register_shutdown_function() semble fonctionner aussi en cas d'erreur fatale : si je met un affichage dans la fonction de rappel,
php m'affiche l'erreur fatale + ce que j'ai mis en affichage

Hors ligne

#5 Le 14/05/2015, à 18:52

tiramiseb

Re : PHP : détecter la bonne fin d'un script

Il faut voir si tu peux accéder à la pile d'exécution.
Je ne sais pas si c'est faisable en PHP, par contre.

En Python oui, mais là n'est pas ta question big_smile

Hors ligne