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 :

Exécuter une fonction après quelques secondes


Sujet :

Langage PHP

  1. #1
    Inscrit
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 151
    Points
    151
    Par défaut Exécuter une fonction après quelques secondes
    Bonjour,

    Je cherche une solution pour exécuter une fonction php après un intervalle de 5 secondes.

    Merci d'avance

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Qu'est ce qui donne le top départ ?
    Si tu veux lancer un script PHP depuis une page déjà chargée, il faudra passer par Ajax.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Inscrit
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 151
    Points
    151
    Par défaut
    Salut,

    Non justement, j’essaye de trouver une solution pour exécuter une fonction php qui ce trouve dans la même page php, mais sans clique juste après un intervalle de 5 secondes.

    Je n’ai aucun GET Ou Post à envoyer juste exécuté une function php.

    Bien sur j’ai passé la nuit à chercher sur le net, mais rien.

  4. #4
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 175
    Points
    175
    Par défaut
    Bonjour,

    Si c'est durant le script php en cours tu peux faire un sleep(). Mais ceci bloquera le chargement de la page durant 5 secondes en plus du script normal.

    Sinon il faudra utiliser soit de l'ajax pour appeler ton script sans bloquer la page elle-même. Soit utiliser différentes fonction afin de demander à php d’appeler une page php de manière asynchrones .

    Php asynchrones (par exemple).

  5. #5
    Inscrit
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 151
    Points
    151
    Par défaut
    Bon autre question cela peut résoudre mon problème
    Peut-on arrêter le chargement de la page et continuer l’exécution de la fonction

  6. #6
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    il y a une erreur courante que l'on peut rappeler, c'est que sleep arrete la génération de la page (donc le moment ou le navigateur n'affiche que du blanc) en attente du téléchargement de la page. Si tu veux une action asynchrone lorsque ta page est déjà chargée, alors c'est vers du javascript et un set_timer() qu'il faut aller.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  7. #7
    Inscrit
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 151
    Points
    151
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    timer = setTimeout("<?php demarrer(); ?>",551);
    Déjà essayer mais la fonction ne s'exécute pas.
    Puis le php et exécuter avant le javascript non?

  8. #8
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Si tu nous disais ce que fait ta fonction on pourrait mieux t'orienter vers la meilleure solution...

  9. #9
    Membre habitué
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Juin 2004
    Messages : 108
    Points : 175
    Points
    175
    Par défaut
    Il est normal que ton code ne fonctionne pas, setTimeout prendra du javascript en argument et non du php comme tu essayes de faire . Tu dois utiliser le setTimeout pour appeller une méthode qui appellera la page contenant ton script php et donc utiliser de l'ajax.

    Soit dit en passant il faudrait en effet que nous donnes des renseignement car il y a peut être un moyen plus simple .

  10. #10
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    +1 ACIDWEB.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  11. #11
    Inscrit
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 151
    Points
    151
    Par défaut
    Donc voila je développe un module pour importer un fichier csv sur prestashop
    Quand je clique sur submit l'url ce d’éclanche

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    index.php?tab=AdminModules&configure=catalog&token=c4023df1029cd736b5241b7132298c55&import=demarrer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    else if (isset($_REQUEST['import']))
     $this->demarrer();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public function demarrer()
    {
     if( $execute == 1 )
      $this->_html .= $this->import($_REQUEST['import'], $config); // tous ce d’éclanche ici
    Puis j'ai les infos qui s'affiche fur et à mesure que ca progresse mais avec la page qui continue le chargement (c'est logique, mais pas beau)
    La ou ca me gène et que mon footer ne s'affiche que lorsque l'import est fini (je trouve ca pas beau très vilain).
    Je cherche a arrêter le chargement, mais continuer l'import
    Ou que la page soit affiché complètement avant de continuer l'import

    Merci d'avance

  12. #12
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    A priori, il serait mieux que le submit envoie une requête ajax pour mettre à jour ton contenu. La page s'agrandira en fonction de ton contenu mais le cadre et le footer seront déjà affichés.

  13. #13
    Inscrit
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 302
    Points : 151
    Points
    151
    Par défaut
    Je viens de faire un teste, fonctionne bien, mais pas très concluent

    Le catalogue est bien envoyer,
    Problème 1 :
    Je ne reçois plus les réponses de la progression de l’envoi.
    Problème 2 :
    A la fin de l’envoi j’ai deux fois la même page qui s’affiche dans la même page lol.

    Code javascript : 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
    <script>
    	jQuery.ajax
    	(
    		{
    			type: 'GET',
    			url: '?tab=AdminModules&configure=catalog&token=c4023df1029cd736b5241b7132298c55&import=demarrer',
    			data: 
    			{
    				vide: 'vide',
    				async: true
    			},
    			success: function(data, textStatus, jqXHR) 
    			{
    				document.getElementById('progress').innerHTML = data;
    			},
    			error: function(jqXHR, textStatus, errorThrown) 
    			{
    				document.getElementById('progress').innerHTML = 'error';
    			}
    		}
    	);
    </script>

  14. #14
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 382
    Points : 10 410
    Points
    10 410
    Par défaut
    Citation Envoyé par Akim13 Voir le message
    A la fin de l’envoi j’ai deux fois la même page qui s’affiche dans la même page lol.
    peut-être que cela fait doublon avec le code php que tu n'aurais pas supprimé ?

Discussions similaires

  1. [FAQ] Syntaxe JavaScript | (3) Comment exécuter une fonction après un délai ?
    Par ctrii dans le forum Contributions JavaScript / AJAX
    Réponses: 0
    Dernier message: 14/01/2013, 16h37
  2. [MooTools] Exécution fonction après quelques secondes
    Par latour500 dans le forum Bibliothèques & Frameworks
    Réponses: 6
    Dernier message: 14/09/2012, 11h48
  3. Réponses: 4
    Dernier message: 28/03/2011, 14h26
  4. Réponses: 2
    Dernier message: 29/07/2008, 15h04
  5. [javascript]execution d'une fonction aprés n seconde
    Par ranell dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/04/2007, 17h04

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