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 :

Temps d'exécution d'une fonction


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut Temps d'exécution d'une fonction
    Bonjour à tous,

    D'avance excusez-moi si ma question vous parait débile, mais bon, allez :

    J'ai une fonction 1 qui s'exécute à la suite d'un POST.
    Selon le nombre de données envoyées, le traitement peut-être plus ou moins long. Il y a une boucle, qui passe les données en revue et appelle une autre fonction 2 qui exécute un traitement MySQL.

    Ensuite, il y a un return sur la fonction 1 avec un message de succès, et on revient sur le formulaire.
    Etant donné que celui-ci est destiné à être imprimé, le message succès s'affiche dans un alert JS.
    En gros ça donne :

    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
     
    function fonction1($dataform){
     
     
          foreach($dataform['toto'] as $val){
     
                fonction2($val);
          }
     
    $succes = "OK";
    return $succes;
    }
     // et dans la page du form :
     
    $succes = fonction1($_POST);
    echo '<script language="javascript">alert(\''.$succes.'\');window.close();window.opener.refresh_page(\'page.php\');</script>';
    Le truc, c'est que les traitements de la fonction 2, les entrées en BDD, sont assez aléatoires et fantaisistes...
    Alors ma question est : est-il possible que l'alerte JS s'affiche AVANT que la boucle et ses traitement soient complètement terminés du fait que le JS est exécuté par le navigateur ?

    Si vous avez une idée sur la question, je veux bien la partager...
    Merci !

  2. #2
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Précision un peu foldingue :

    Dans la fonction 2, une série d' UPDATE mySQL, si je fais un echo à chaque tour de boucle, ça parait mieux fonctionner.

  3. #3
    Membre extrêmement actif
    Avatar de kdmbella
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2010
    Messages
    799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Août 2010
    Messages : 799
    Par défaut
    moi j'avoue ne pas comprendre ce problème !
    "L'humanité se divise en trois catégories : ceux qui ne peuvent pas bouger, ceux qui peuvent bouger, et ceux qui bougent."
    - Benjamin Franklin

    De l'aide en Javascript , consultez la FAQ JS.

    De l'aide sur le FrameWork JS DHTMLX : posez vos questions sur le forum des Bibliothèques & Frameworks JS.

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 334
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 334
    Billets dans le blog
    17
    Par défaut
    Comment faire un alert("OK") avant de savoir si ça l'est réellement ?



    PS : tu peux remplacer avantageusement ton JS par du HTML/CSS

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    @media print {
        .no-print {
            display : none ;
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <p class="no-print">Traitement effectué avec succès</p>
    Ainsi le message de confirmation ne sera jamais imprimé.

    (oui je déteste le JS et ai toujours fait tout ce que je pouvais pour l'éviter )

  5. #5
    Membre éprouvé Avatar de renaud26
    Homme Profil pro
    Webmaster
    Inscrit en
    Mars 2003
    Messages
    1 365
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Côtes d'Armor (Bretagne)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Mars 2003
    Messages : 1 365
    Par défaut
    Bonjour,

    Et bien, "OK", c'est sensé l'être puisque la variable $succes est retournée par la fonction 1, à la fin, donc normalement quand tout est exécuté (return $succes).

    Par contre, je ne connaissais pas le "no-print" HTML/CSS et je vais le tester.
    Merci !

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 12
    Par défaut
    Citation Envoyé par renaud26 Voir le message
    Et bien, "OK", c'est sensé l'être puisque la variable $succes est retournée par la fonction 1, à la fin, donc normalement quand tout est exécuté (return $succes).
    Je me méfie de "c'est censé l'être", cela veut dire que tu peux te contenter d'un Pour envoyer du HTML avant la fin je placerais un flush(); juste après ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<script language="javascript">alert(\''.$succes.'\'...
    qu'il faut déplacer avant le foreach de la fonction 1.
    Mais c'est dangereux étant donné que le traitement n'est pas terminé.

    Tu peux aussi placer cela dans le foreach :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    $taille = sizeof($dataform['toto']);
    foreach($dataform['toto'] as $val){
     
        fonction2($val);
        echo $taille--;
         flush();
    }
    ainsi ton utilisateur voit un compteur

Discussions similaires

  1. Calculer le temps d'exécution d'une fonction
    Par ZAYDOUN dans le forum MATLAB
    Réponses: 3
    Dernier message: 11/07/2008, 14h45
  2. [VBA-E] Tracer le temps d'exécution d'une fonction
    Par Currahee dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/04/2007, 14h06
  3. mesurer le temps d'exécution d'une fonction
    Par Fonzy007 dans le forum C
    Réponses: 12
    Dernier message: 28/12/2006, 17h27
  4. Réponses: 10
    Dernier message: 28/04/2006, 16h36
  5. Réponses: 3
    Dernier message: 11/03/2006, 15h35

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