IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

EXIT() est-il obligatoire pour les script de fin ?


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de clavier12AZQSWX
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Avril 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Technicien maintenance

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 460
    Par défaut EXIT() est-il obligatoire pour les script de fin ?
    bonjour,

    on m'a appris à toujours mettre un EXIT() quand on fait une redirection LOCATION .
    Mais sinon, il sert à quoi vraiment? il est facultatif ?

    y-a-t-il une différence entre ces 2 codes :

    code1
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    echo "c'est fini";
    exit();

    code2
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    exit("c'est fini");

    Si on fait un script php unique, qui ne redirige nulle-part, qui ne renvoie rien en frontal, faut-il mettre un exit à la fin du script ?
    Quand on met un exit à la fin, est-ce que apache reçoit un signal particulier ? une libération de mémoire ou qq chose comme ça se passe-t-il ?

    Merci de vos retours (et anecdotes si vous en avez sur la fonction exit)

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 310
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 310
    Billets dans le blog
    17
    Par défaut
    Hormis le cas cité, et plus généralement le besoin d'une sortie prématurée du script, je ne pense pas que exit soit utile dans la plupart des scripts.

    Perso j'utilise beaucoup PHP pour des scripts CLI (lignes de commandes), et là exit est utile pour renvoyer un code de sortie et que le script / environnement puisse agir en conséquence.
    0 => Succès
    1 => Erreur / statut particulier
    2 => Autre erreur / statut particulier
    etc.

    Ex. pour chaîner dans un cron ou une invite de commandes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ ./import-data.php && ./process-data.php
    => N'exécutera process-data.php que si import-data.php a un code de sortie à 0

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ ./import-data.php; [ $? = 200 ] && ./another-data-processing.php
    => N'exécutera another-data-processing-data.php que si import-data.php a un code de sortie à 200

  3. #3
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    2 981
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 2 981
    Par défaut
    exit termine le script courant de manière inconditionnel. Mais si un script arrive à sa fin, celui-ci s'interrompera même si l'instruction exit n'est pas présente. (ça va mieux en le disant).

    Hormis le fait que cette instruction permet de quitter le script à tout moment, son rôle est aussi d'indiquer dans quelles conditions le script s'est interrompu: Est-ce que celui-ci s'est interrompu car il est arrivé à la fin et que tout c'est bien passé? Est-ce que celui-ci s'est interrompu suite à un problème? Et quel est ce problème?
    On peut donc dire ce qu'il en est en passant une chaîne de caractères explicative comme paramêtre ou un entier correspondant à un code d'erreur.

    Par défaut, exit sans paramètre renvoie 0, ce qui signifie que tout c'est bien passé (norme POSIX).
    Selon l'environnement dans lequel on évolue, ces codes d'erreurs correspondent à une situation précise. Exemple: les premiers codes d'erreurs sous linux:
    Code text : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    EPERM 1 Opération non permise
    ENOENT 2 Aucun fichier ou dossier de ce type
    ESRCH 3 Aucun processus de ce type
    EINTR 4 Appel système interrompu
    EIO 5 Erreur d'entrée/sortie
    ENXIO 6 Aucun périphérique ou adresse
    E2BIG 7 Liste d'arguments trop longue
    ENOEXEC 8 Erreur de format pour exec()
    EBADF 9 Mauvais descripteur de fichier
    ECHILD 10 Aucun processus enfant
    EAGAIN 11 Ressource temporairement non disponible
    ENOMEM 12 Ne peut allouer de la mémoire
    EACCES 13 Permission non accordée
    EFAULT 14 Mauvaise adresse
    ENOTBLK 15 Bloc de périphérique requis
    (et il y en a 133 comme ça).

    L'utilité d'un code d'erreur ou d'un message d'erreur est assez faible lorsqu'on utilise PHP sur un serveur pour faire du web, par contre il est tout à fait conseillé de le produire lorsqu'on utilise PHP via CLI (en ligne de commande) afin de permettre une meilleur communication avec les autres applications succeptibles d'utiliser ce script.
    Cela-dit on peut très bien envoyer un code d'erreur dans le cadre d'un appel Ajax.

    exit avec un chaîne de caractères a plus pour vocation à informer l'utilisateur (que les autres applications). On est à mi-chemin entre un processus de débuggage "à la main" et des excuses bon marché pour l'utilisateur.

    À mon avis, si tu as quelque chose à dire, mieux vaut faire un bon vieux echo et renvoyer un code.

  4. #4
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Juste partage de mon expérience : je n'écris jamais exit dans mes scripts. Je n'en perçois pas le besoin excepté pour les situations où effectivement tu aurais un script PHP en ligne de commande (CLI) pour retourner alors un code d'erreur (autre que 0). Perso, dans ce cas-là, j'écris un script en bash mais l'utilisation de Seb est correcte.

    En programmation PHP, je programme comme suggéré par CosmoKnacki; je m'arrange pour que la dernière ligne exécutée corresponde à ... la dernière ligne à devoir être exécutée (et donc la première phrase dans le post de CosmoKnacki).

    Faire autrement c'est peu "programmation spagetthi" où on fait des break, continue, goto, ... bref des branchements de code "arbitraires".

  5. #5
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 310
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 310
    Billets dans le blog
    17
    Par défaut
    Faire autrement c'est peu "programmation spagetthi" où on fait des break, continue, goto, ... bref des branchements de code "arbitraires".
    Chut malheureux, ne dit à personne que goto existe en PHP

    Sinon perso je n'ai aucuns soucis à sortir plus tôt d'une boucle ou autre avec un continue & cie.
    Cela évite les scripts trop "profonds" et améliore grandement la lecture.
    Par contre oui il faut faire attention dès que ça se complique un peu au risque d'avoir des résultats "surprenants".

  6. #6
    Membre Expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Par défaut
    Mais euh ? Je n'ai pas dit que cela existait en php... Je parlais en absolu 😜

  7. #7
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 310
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 310
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par cavo789 Voir le message
    Mais euh ? Je n'ai pas dit que cela existait en php... Je parlais en absolu 😜
    Ah zut, du coup c'est moins qui ai révélé le pot aux roses

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Le langage Java est-il adapté pour les jeux vidéo ?
    Par Invité dans le forum Développement 2D, 3D et Jeux
    Réponses: 637
    Dernier message: 05/02/2021, 22h38
  2. Quanta plus - icones pour les scripts
    Par bruckeb dans le forum Applications et environnements graphiques
    Réponses: 0
    Dernier message: 11/06/2008, 16h52
  3. Un plugin pour les scripts shell Unix
    Par Neuromancien2 dans le forum Eclipse
    Réponses: 1
    Dernier message: 22/01/2008, 08h11
  4. L'anglais est il obligatoire pour programmer ?
    Par kiriyamakaneda dans le forum Etudes
    Réponses: 6
    Dernier message: 28/05/2007, 11h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo