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 :

Script long sur server php et obtenir son statut (%)


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur du dimanche
    Inscrit en
    Février 2013
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Février 2013
    Messages : 154
    Points : 105
    Points
    105
    Par défaut Script long sur server php et obtenir son statut (%)
    Bonjour

    J'ai une page client, qui lance l'exécution d'un script sur une page du serveur, et j'aimerais obtenir, disons toutes les demi secondes, le statut (% ou équivalent) de l'exécution de ce script. Un peu comme du multithreading, sauf qu'on n'est pas en C++ ici, oh !

    Alors voilà l'idée :

    client.php :
    Code : 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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    <?php
     
        session_start();
        $_SESSION["progress"] = 0;
     
    ?>
     
    <!DOCTYPE html>
    <html>
        <head>
            <script src="https://code.jquery.com/jquery-3.5.1.min.js"></script>
     
        </head>
     
     
     
        <body>
     
            <script type="text/javascript" charset="utf-8">
     
                var status = 0;
     
                function show_progress_bar() {
     
                    $.ajax({
    			    	url:'server.php',
    			  	});
     
                    setInterval(function() { 
     
                        $.ajax({
     
    				    	url:'status.php',
     
    				    	success:function(response) {
     
    				    	    console.log('result : ' + response);
     
                            }
    				  	});
     
     
                    }, 500);   
     
                }
     
                show_progress_bar();
     
     
     
     
     
            </script>
        </body>
    </html>>
    server.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
     
     
        for ($i=0; $i<1; $i+=0.1) {
            session_start();
            $_SESSION["progress"] = $i;
            session_write_close();
            sleep(1);
     
        }
     
     
    ?>
    et status.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <?php
     
        session_start();
        echo $_SESSION["progress"];
     
     
        session_write_close();
    ?>
    Ca marche à peu près
    Sauf que quand je recharge la page, c'est comme s'il n'avait pas compris qu'il fallait redémarrer une session, en tous cas j'ai l'impression que le script de server.php tourne toujours, exemple d'output :
    result : 0.7 client.php:53:26
    result : 0.8 client.php:53:26
    result : 0.9 client.php:53:26
    result : 1 client.php:53:26
    result : 0.4 client.php:53:26
    result : 0.5 client.php:53:26

    Comment empêcher cela ?

    Merciiii
    "There should be no boundaries to human endeavor" - Hawking
    Retrouvez moi sur GitHub : https://github.com/JeanLouisMassei

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

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 234
    Points : 15 531
    Points
    15 531
    Par défaut
    quand vous relancez la page une 2e fois, le 1er lancement de server.php continue. et donc, la boucle "for" modifie la valeur "progress".

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur du dimanche
    Inscrit en
    Février 2013
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur du dimanche

    Informations forums :
    Inscription : Février 2013
    Messages : 154
    Points : 105
    Points
    105
    Par défaut
    Effectivement

    Je suis allé chercher ma solution du côté des SSE event, plus propre et plus moderne.

    A tout hasard : http://regularcoder.com/creating-rea...vents-and-php/

    Résolu
    "There should be no boundaries to human endeavor" - Hawking
    Retrouvez moi sur GitHub : https://github.com/JeanLouisMassei

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

Discussions similaires

  1. lancer un script shell sur un serveur distant avec php
    Par MSM_007 dans le forum Langage
    Réponses: 1
    Dernier message: 03/05/2010, 11h32
  2. Réponses: 2
    Dernier message: 01/02/2010, 15h45
  3. Msql server, php & asp sur un même site
    Par Denis Dee Jay dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 14/05/2008, 11h22
  4. Réponses: 24
    Dernier message: 17/04/2008, 14h24
  5. [Blog] Votre avis sur ce script de Blog en PHP (GPL)
    Par peck dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 04/01/2007, 09h44

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