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 :

[PHP-JS] Comment créer un thread ?


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 29
    Points : 24
    Points
    24
    Par défaut [PHP-JS] Comment créer un thread ?
    Salut à tous.
    Je souhaiterais savoir si il existe un moyen de creer un thread en php?
    Je souhaite en fait dans ma page php lancer une fonction et ne pas attendre quelle est finie de bosser pour continuer à "avancer" dans mon script.
    Si qqn a une idée elle est la bienvenue.
    Merci d'avance.

  2. #2
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    Bonjour, je ne crois pas que ce soit possible en tant que telle. Cependant il existe des moyens de faire à peu prèt ce que tu souhaites :
    register_shutdown_function() te permet d'enregistrer une fonction qui sera exécutée à la fin de ton script par exemple.
    Tu peux aussi placer ton script dans un fichier à part, et lors du chargement de ta page l'appeler dans une balise image (il sera chargé en paralèle).

    @+
    Testez le forum Fire Soft Board, un forum libre, gratuit et français.

    Système de template de phpBB - Lisez la FAQ PHP avant toute question si vous débuttez en PHP.

  3. #3
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    Je pense que tu peux aussi utiliser Ajax/javascript pour exécuter un second script pendant ta page et ne pas attendre que ce script ait fini de s'exécuter pour poursuivre

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    A priori la solution de koopajah me parait plus abordable car j'ai pas tt compris de ce que me dis genova (mon niveau en php n'est pas très élevé...). Si vous auriez plus de precision quand à cette solution je suis preneur .
    Mais je reste ouvert à d'autres propositions...
    Merci pour vos reponses.

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    Cette piste m'interessant aussi, j'ai réussit à le faire comme ceci:
    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
     
    var xhr = null;
     
    function LanceExeAsynchrone(AppFileName)
    {	
    	if (window.XMLHttpRequest)        
    	{ 
    		xhr = new XMLHttpRequest();     //  Firefox, Safari, ...
    	} 
    	else
    	{
      	if (window.ActiveXObject)                          //  Version Active
       	{
        	        xhr = new ActiveXObject("Microsoft.XMLHTTP");   // Internet Explorer 
       	}
      }
     
      if (xhr != null)
      {
      	pageName = 'execute.php?app=' + AppFileName;  	
      	xhr.open('GET', pageName, true);
      	xhr.onreadystatechange = handleResponse;
      	xhr.send(null);  
      }
      else
      	alert("AJAX marche pas !");
    }
     
    function handleResponse() {
    	if(xhr.readyState == 4){
    		var response = xhr.responseText;
    		alert(response);
    	}	
    }
    et dans ma page execute.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $AppName = $_GET["app"];
    exec($AppName);
    ici, la function handleResponse() ne me sert que pour le debug... il suffit de mettre un echo dans execute.php pour l'avoir dans le alert() de cette fonction
    Bruno.

  6. #6
    Membre éclairé
    Avatar de genova
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    487
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 487
    Points : 790
    Points
    790
    Par défaut
    Et si le client a désactivé Javascript ?

    La solution des images revient au même, et à l'avantage de fonctionner partout. Il suffit de faire un script toto.php comme ceci :
    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
    <?php
    if (function_exists('register_shutdown_function'))
    {
    	register_shutdown_function('ta_fonction');
    }
    else
    {
    	ta_fonction();
    }
     
    // On affiche un pixel transparent
    header('Content-length: 85');
    header('Content-type: image/gif');
    print base64_decode(
    	'R0lGODlhAQABALMAAAAAAIAAAACAA'.
    	'ICAAAAAgIAAgACAgMDAwICAgP8AAA'.
    	'D/AP//AAAA//8A/wD//wBiZCH5BAE'.
    	'AAA8ALAAAAAABAAEAAAQC8EUAOw=='
    );
    flush();
    exit;
    ?>
    et dans ton script principal il suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<img src="toto.php" />';
    Lors de l'affichage de ta page, le navigateur va aller chercher l'image toto.php, et pas conséquent exécuter le script php en parallèle (sans pour autant passer par du javascript).
    Testez le forum Fire Soft Board, un forum libre, gratuit et français.

    Système de template de phpBB - Lisez la FAQ PHP avant toute question si vous débuttez en PHP.

  7. #7
    Membre régulier Avatar de NiHiL
    Inscrit en
    Juin 2006
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 101
    Points : 108
    Points
    108
    Par défaut
    Tu peux pas créer de thread mais tu peux faire du processus en PHP :

    http://fr.php.net/manual/fr/ref.pcntl.php

  8. #8
    Membre à l'essai
    Inscrit en
    Juin 2006
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    Citation Envoyé par genova
    Et si le client a désactivé Javascript ?

    La solution des images revient au même, et à l'avantage de fonctionner partout. Il suffit de faire un script toto.php comme ceci :
    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
    <?php
    if (function_exists('register_shutdown_function'))
    {
    	register_shutdown_function('ta_fonction');
    }
    else
    {
    	ta_fonction();
    }
     
    // On affiche un pixel transparent
    header('Content-length: 85');
    header('Content-type: image/gif');
    print base64_decode(
    	'R0lGODlhAQABALMAAAAAAIAAAACAA'.
    	'ICAAAAAgIAAgACAgMDAwICAgP8AAA'.
    	'D/AP//AAAA//8A/wD//wBiZCH5BAE'.
    	'AAA8ALAAAAAABAAEAAAQC8EUAOw=='
    );
    flush();
    exit;
    ?>
    et dans ton script principal il suffit de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<img src="toto.php" />';
    Lors de l'affichage de ta page, le navigateur va aller chercher l'image toto.php, et pas conséquent exécuter le script php en parallèle (sans pour autant passer par du javascript).
    Super l'idée de l'image, mais moi je veux que mon programme s'exécute sur une action de l'utilisateur (un click sur un bouton par exemple) et sans ouvrir de nouvelle fenetre ni changement de page donc pas question d'une technologie serveur type php dans mon script principal.
    Et là du coup je vois pas comment faire.

    Bruno.

Discussions similaires

  1. [XL-2003] Comment créer un thread ?
    Par AlexIsOnFire dans le forum Excel
    Réponses: 1
    Dernier message: 25/07/2010, 14h26
  2. [FAQ VC++]Comment créer un thread d'interface utilisateur?
    Par Gabrielly dans le forum Contribuez
    Réponses: 0
    Dernier message: 07/10/2009, 20h40
  3. Réponses: 0
    Dernier message: 11/03/2009, 16h30
  4. [PHP-JS] Comment créer une boucle avec des headers
    Par djinnwatcher dans le forum Langage
    Réponses: 10
    Dernier message: 17/07/2006, 15h48
  5. [Thread]Comment créer plusieurs thread à la demande??
    Par Devil666 dans le forum Concurrence et multi-thread
    Réponses: 8
    Dernier message: 14/09/2005, 13h29

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