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 :

[Système] Savoir si un programme est en train de tourner


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 80
    Par défaut [Système] Savoir si un programme est en train de tourner
    Bonjour,

    Il m'arrive de lancer un script qui est susceptible de se stopper (par exemple lorsqu'une connexion à une base de données a échoué).
    Le temps de traitement peut être très long ce qui fait que le navigateur peut avoir un "time out" alors que ça tourne toujours.
    Il faut que je sache si le programme a planté/stoppé ou s'il tourne encore.

    Existe-t-il une fonction php ou une astuce qui permet de savoir si un programme tourne ?

    Merci beaucoup d'avance !

    Lyna

  2. #2
    Membre éclairé Avatar de JmL40
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    348
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 348
    Par défaut
    Bonjour,

    Plusieurs techniques peuvent être employées, peut-être que ce ne sont pas les meilleures mais celle-ci fonctionnent:

    Si tu souhaite savoir si une connection à une BD a échouée, utilise la fonction DIE après à la suite de ton query :

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $resultat = mysql_query($requete,$link) or die('Erreur : '.mysql_error() );
    Si la requete ou ta connection a echoué un message d'erreur s'affichera du style : Erreur 1052 : champ xxx inconnu !

    Cordialement

  3. #3
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Par défaut
    Pas évident. Déjà, ça dépend de l'OS : sur un Unix, tu peux appeler la commande ps (depuis un exec PHP, par exemple) pour récupérer la liste des processus tournant sur la machine. Sous Windows, c'est mort

    Cependant, si ton programme, comme tu dis, est un script PHP exécuté par Apache, tu ne pourras pas savoir si ton programme tourne ou pas car le processus qui exécute ton programme, c'est apache (httpd), et ton ps ne renverra que httpd donc rien de significatif pour toi

    Y a peut-être moyen de t'en sortir en forkant ton programme pour loguer une trace toutes les secondes dans un fichier de log. Ensuite, tu regardes dans ton fichier de log si une trace apparaît toutes les secondes. Si oui, c'est qu'il vit ; si non, c'est qu'il est mort. J'ai jamais trop fait ça. Vois ce que tu peux faire avec les fonctions PHP http://uk.php.net/manual/fr/ref.pcntl.php

    Qu'est-ce que ton programme et comment est-il exécuté ?

  4. #4
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 80
    Par défaut
    JmL40, j'utilise déjà le die mais comme le navigateur est en time out, ben le message du die ne s'affiche pas !

    _Mac_, je suis sous Windows
    Cette idée est celel que j'avais pensé mais le souci est que si le programme s'arrête, ben il arrêtera d'afficher les secondes. et je ne saurais pas s'il s'est bien terminé ou s'il a planté.

    C'est un programme de transfert et modification de données (gros volume) d'une base à une autre.

  5. #5
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    et ben pour reprendre l'idée de Mac tu crées un fichier au début du script et a la fin tu le supprimes.
    Si le fichier existe toujours au bout d'un certain temps c'est que le programme est sorti en erreur !

  6. #6
    Membre confirmé
    Inscrit en
    Février 2007
    Messages
    80
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 80
    Par défaut
    Merci c'est ce que je vais faire, le test avec le temps, mais je voulais optimiser si c'était possible.

    merci pour votre apport en tout cas !

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

Discussions similaires

  1. [SDL][FAQ/Source] Comment savoir si le programme est actif ?
    Par fearyourself dans le forum Contribuez
    Réponses: 3
    Dernier message: 26/07/2007, 10h34
  2. API pour savoir si un processus est en train de marcher
    Par andrianiaina dans le forum Windows
    Réponses: 2
    Dernier message: 17/10/2006, 16h23
  3. API pour savoir si un processus est en train de marcher
    Par andrianiaina dans le forum Windows
    Réponses: 5
    Dernier message: 16/10/2006, 16h57
  4. Comment savoir si un fichier est en train d'etre lu ou accede?
    Par daniel_gre dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 20/09/2006, 11h47
  5. Savoir si un programme est en execution ou pas.
    Par alan8 dans le forum Windows
    Réponses: 5
    Dernier message: 29/08/2005, 11h22

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