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 :

boucle for +time


Sujet :

Langage PHP

  1. #1
    Provisoirement toléré
    Inscrit en
    Février 2008
    Messages
    475
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 475
    Points : 121
    Points
    121
    Par défaut boucle for +time
    bonjour
    je suis entrain de faire un boucle pour afficher un message si il'ya une erreur pendant 10 seconde


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $seconds=10;
     
        for ($i = 1; $i <= $seconds; $i ++) 
     
     
    {
    //traitement de vérification
    }
    mai dans ce scripte la lecture de $seconde et comme un entier c'est à dire le traitement ce fait même pas dans 2 seconde
    comment je peut faire
    une boucle de 10 seconde
    merci

  2. #2
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 451
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 451
    Points : 4 600
    Points
    4 600
    Par défaut
    il me semble que ce que tu cherches a faire se fait en javascript...
    comme la c'est en php, c'est cote serveur.. donc (si t'y arrive (avec sleep() au pire)) le serveur attendra les 10 secondes avant d'envoyer le resultat... et non toutes les secondes, le traitement
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

  3. #3
    Provisoirement toléré
    Inscrit en
    Février 2008
    Messages
    475
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 475
    Points : 121
    Points
    121
    Par défaut
    Citation Envoyé par rezguiinfo Voir le message
    bonjour
    je suis entrain de faire un boucle pour afficher un message si il'ya une erreur dans ce 10 seconde


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $seconds=10;
     
        for ($i = 1; $i <= $seconds; $i ++) 
     
     
    {
    //traitement de vérification
    }
    mai dans ce scripte la lecture de $seconde et comme un entier c'est à dire le traitement ce fait même pas dans 2 seconde
    comment je peut faire
    une boucle de 10 seconde
    merci

  4. #4
    Membre chevronné
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Points : 1 839
    Points
    1 839
    Par défaut
    ?

    Comme déjà dit, impossible de faire ça sans javascript, ton script php est effectué sur le serveur avant l'envoi de la page au navigateur, donc au pire, si tu arrivais a travailler avec les secondes (ce qui n'est pas le cas) tu ne ferais qu'envoyer ta page au bout de 10 secondes...

    en javascript tu peux utiliser une fonction basée sur un tempo ( regarde du côté de setTimeout() )

    Si tu veux vraiment utiliser php pour effectuer un traitement dans ce compte à rebours javascript, il faut utiliser Ajax...


  5. #5
    Membre émérite Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Points : 2 566
    Points
    2 566
    Par défaut
    Au pire c'est faisable avec les sockets mais c'est lourd pour un intérêt moindre (?)

  6. #6
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    mais si c'est faisable, mais ca marche pas sur tout les serveurs (output_buffering à Off) :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ob_implicit_flush(true);
     
    for($i=0; $i < 10; $i++)
    {
        echo $i, ' ';
        sleep(1);
    }
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ob_start();
     
    for($i=0; $i < 10; $i++)
    {
        echo $i, ' ';
        ob_flush();
        flush();
        sleep(1);
    }

  7. #7
    Expert éminent
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2010
    Messages : 3 929
    Points : 7 762
    Points
    7 762
    Par défaut
    stealth35 à raison, c'est théoriquement faisable en désactivant l'output buffering (donc en envoyant les données au client/navigateur à chaque echo) mais ça ne s'applique que dans des cas ultra-spécifiques ou PHP à un temps de génération très long.

    Mais si c'est, par exemple, pour mettre un compteur sur la page, c'est une mauvaise idée: tu vas displayer le header, puis le contenu vas s'afficher au fur et à mesure de l'éxécution retardée puis le footer va arriver, ce qui va pénaliser la navigation.

    Pour ce que rezguiinfo il n'y a effectivement que javascript (eventuellement avec Ajax) que ce soit possible.

Discussions similaires

  1. Réponses: 0
    Dernier message: 20/04/2011, 14h51
  2. boucle for+ time
    Par rezguiinfo dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 16/01/2011, 16h23
  3. [Debutant] Batch et Boucle for
    Par ludovic.fernandez dans le forum Scripts/Batch
    Réponses: 8
    Dernier message: 06/05/2004, 19h21
  4. [Swing][boucles] for, do, if .....comment faire simple?
    Par chastel dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 02/05/2004, 22h49
  5. [langage] boucle "for" modification du pas
    Par K-ZimiR dans le forum Langage
    Réponses: 4
    Dernier message: 29/04/2004, 11h54

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