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 :

Temporisation entre deux traitements avec affichage de l'avancement


Sujet :

Langage PHP

  1. #1
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut Temporisation entre deux traitements avec affichage de l'avancement
    Bonjour,

    J'ai un script qui lance l'exécution d'un 1er traitement (externe) durant X secondes (durée variable et défini). A la fin de ce traitement, j'en lance un 2eme. Entre le 1er traitement et le second, j'ai besoin d'avoir une temporisation du script pendant le 1er traitement.

    Pendant cette temporisation, j'ai fais un script qui m'affiche le temps d'avancement :

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    $HcMax = 1600;
     
    $i = 0;
    // Initialisation variable sauvegarde de la position d'avancement
    $BakAvancement = 0;
    // Calcul temps de traitement en seconde
    $x = strtotime($HcMax) - time();
    $x = ($x<0)?0:$x;
     
    echo "Temps total du traitement : $x\n";
     
    do{
    	// Calcul avancement traitement - arrondi à l'entier supérieur
    	$Avancement = ceil($i * 100/$x);
    	// Affichage de l'avancement du traitement
    	if($Avancement != $BakAvancement){
    		echo "Avancement : $i sur $x\n";
    		echo "$Avancement%\n";
    	}
    	// Sauvegarde de la position d'avancement
    	$BakAvancement = $Avancement;
    	// Pause
    	sleep(1);
    	$i++;	
    }while(date('Hi') < $HcMax);
     
    echo "Traitement terminé";

    Cela fonctionne bien, mais je me dis que cela n'est pas la meilleur solution car si mon compteur prend du retard, je vais avoir un état d'avancement faussé. Après, j'ai toujours ma sortie de boucle qui me fera sortir de la tempo à l'heure donné.

    Qu'en pensez vous ? Auriez vous des idées d'améliorations ?

  2. #2
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 309
    Points : 1 385
    Points
    1 385
    Par défaut
    Bonjour,

    le premier traitement pourrait écrire un fichier qui serait régulièrement lu par le PHP qui pourrait ainsi connaitre l'avancement du premier script.

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Points : 287
    Points
    287
    Par défaut
    En faite le 1er traitement est l'activation d'un relais électrique. La temporisation intervient pour temporisé sont fonctionnement. Le second traitement est la désactivation du relais électrique.

    J'utilise ça dans un système domotique.

Discussions similaires

  1. Réponses: 26
    Dernier message: 21/01/2009, 08h32
  2. Réponses: 5
    Dernier message: 13/11/2008, 21h35
  3. calcul délais entre deux dates avec plages horaires
    Par leila eco dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 03/01/2007, 16h51
  4. Problème temporisation entre deux instructions
    Par Bubur dans le forum Flash
    Réponses: 1
    Dernier message: 03/12/2006, 01h01
  5. Réponses: 1
    Dernier message: 05/10/2006, 04h20

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