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 :

[PHP-JS] Vérifier si un script est en cours d'exécution


Sujet :

Langage PHP

  1. #1
    Membre actif Avatar de renaudjuif
    Inscrit en
    Avril 2006
    Messages
    325
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 325
    Points : 258
    Points
    258
    Par défaut [PHP-JS] Vérifier si un script est en cours d'exécution
    Bonjour à tous,

    Comment feriez-vous pour vérifier si un script est en cours d'exécution ?
    Précision, le script ne renvoie pas d'infos dans le navigateur.

    J'avais pensé à 1 flag dans 1 fichier texte par exemple, en début de script à 1 et en fin de script on le passe à 0... mais si le script ne s'arrête pas normalement, plantage du serveur par exemple... ça ne marche pas.

    L'idéal serait de pouvoir interroger la page exécutant le script, pour obtenir le même genre d'infos que dans les fichiers log d'apache.
    Mais j'avoue que je sèche un peu

  2. #2
    Expert confirmé
    Avatar de N1bus
    Homme Profil pro
    Dev. Web & OpenERP
    Inscrit en
    Janvier 2003
    Messages
    2 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Dev. Web & OpenERP
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 827
    Points : 5 673
    Points
    5 673
    Par défaut
    L'idéal serait de pouvoir interroger la page exécutant le script,
    ça ne me parait pas possible puisque le script sera exécuté AVANT l'affichage de la page

  3. #3
    Membre actif Avatar de renaudjuif
    Inscrit en
    Avril 2006
    Messages
    325
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 325
    Points : 258
    Points
    258
    Par défaut
    le script (qui peut durer plusieurs heures) marche bien, et au début il envoyait les infos au navigateur du genre "traitement fichier 1 de 10... ligne 567 de 20'847".
    Mais le problème, c'est que l'affichage des infos est + lourd que le traitement lui-même... La page de résultats affichée, en fin de script fait plusieurs mégas (8 à 10 Mo).

    Donc l'idée serait un truc du genre :
    Le script en début renvoie au browser du javascript (et un peu d'ajax ) avec "echo"<javascript>...". Le script envoie aussi un timer javascript , pour aller chercher une autre page PHP qui interroge toutes les n secondes le script en cours d'exécution.
    Comme ça ma page client ne grossit pas quelle que soit le traitement en cours, mais rafraîchit simplement une zone de texte.
    L'idée est de s'assurer que le script s'exécute normalement et qu'il n'a pas planté. Donc le client n'a plus les infos de progression aussi précises, mais sait si le script s'exécute de façon normale...

    C'est un peu tordu comme structure, mais je ne vois pas plus simple.
    Et surtout je ne sais pas si c'est réalisable ?

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 360
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 360
    Points : 15 708
    Points
    15 708
    Par défaut
    tu peux faire ça avec AJAX
    tu lances le script du traitement avec AJAX et dans ce script tu laisses une trace dans un fichier de log
    en même temps tu lances un autre script en AJAX qui lis le fichier de log et qui gère l'affichage (texte barre de défilement) et qui vide le fichier de log pour éviter qu'il grossisse.

  5. #5
    Membre actif Avatar de renaudjuif
    Inscrit en
    Avril 2006
    Messages
    325
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 325
    Points : 258
    Points
    258
    Par défaut
    Un fichier de log, ça me parait bien.
    Penses-tu que le fichier log puisse être mis à jour dans des itérations (while, foreach,...) donc plusieurs fois par secondes.
    Est-ce que ça ralentirait le script de façon perceptible ?
    Et est ce que il peut y avoir des conflits entre les différents accès à ce fichier (accès pour vider le fichier, et pour écrire dedans)?

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    Citation Envoyé par renaudjuif
    le script (qui peut durer plusieurs heures) marche bien, et au début il envoyait les infos au navigateur du genre "traitement fichier 1 de 10... ligne 567 de 20'847".
    Mais le problème, c'est que l'affichage des infos est + lourd que le traitement lui-même... La page de résultats affichée, en fin de script fait plusieurs mégas (8 à 10 Mo).
    Si tu fais un echo toutes les 10 lignes sur un fichier de 20000 lignes, tu en as 2000, donc effectivement c'est un gros fichier à envoyer.

    Tout ce que tu souhaites, c'est voir où tu en es.

    Déjà, si au lieu de faire un long message tu n'affichais que le numéro de la ligne, le traitement de ta page sera bien plus court. Et si faisais un affichage du numéro toutes les 100 lignes par exemple ?
    Si ton script prend 3 heures, tu affiches toutes les minutes. n'est-ce pas suffisant pour voir ?

    Ce n'est qu'une proposition pour éviter de refaire ton traitement ...

    Sinon de bons conseils dans les tutoriels et cours de formation pour apprendre PHP : http://php.developpez.com/cours/

  7. #7
    Membre actif Avatar de renaudjuif
    Inscrit en
    Avril 2006
    Messages
    325
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 325
    Points : 258
    Points
    258
    Par défaut
    Citation Envoyé par francis m
    Déjà, si au lieu de faire un long message tu n'affichais que le numéro de la ligne, le traitement de ta page sera bien plus court. Et si faisais un affichage du numéro toutes les 100 lignes par exemple ?
    Si ton script prend 3 heures, tu affiches toutes les minutes. n'est-ce pas suffisant pour voir ?.
    J'ai effectivement essayé d'alléger tout ça (pour éviter d'avoir le script à refaire ) : affichage toutes les 100 lignes, optimisation des lignes envoyées au navigateur, suppression de la barre de progression, et ça rame un peu moins au début et petit à petit l'affichage des infos ne suit plus le traitement.. Ca ne parait donc malheureusement pas suffisant.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 012
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 012
    Points : 1 093
    Points
    1 093
    Par défaut
    bon j'admets...

    fais un affichage toutes les 500 lignes ou même 1000.
    cela fait 20 numéros à afficher, donc rien

    et s'il rame en avançant, affiche des durées pour voir

    peut-être le problème n'est-il pas au niveau de ton affichage, mais de ton script. est-ce que tu ne gères pas des tableaux de plus en plus grand par exemple...

Discussions similaires

  1. Vérifier qu'un script est chargé
    Par aku84 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 20/04/2013, 23h08
  2. [XL-2003] Vérifier si un programme est en cours d'execution
    Par azertym dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/03/2012, 10h58
  3. vérifier si un programme est en cours d'éxécution
    Par Jasmine80 dans le forum Langage
    Réponses: 11
    Dernier message: 15/02/2009, 14h44
  4. [MySQL] Vérifier si une données est en cours
    Par namstou3 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 24/08/2007, 17h21
  5. [ksh]Savoir si un script est en cours
    Par pop_up dans le forum Linux
    Réponses: 5
    Dernier message: 13/08/2007, 11h56

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