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 plusieurs scripts en même temps


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 36
    Par défaut exécuter plusieurs scripts en même temps
    Bonjour,

    je cherche une solution pour qu'un script PHP lance plusieurs script en même temps, à l'heure actuel je boucle sur un tableau de données qui exécute tous les script 1 a 1.

    Ce que je voudrais :
    la possibilité de lancer tous mes scripts sans attendre que le précédent est fini de s’exécuter.

    Si vous avez une solution.

    Merci.

  2. #2
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    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
    Par défaut
    Paralléliser les exécutions en PHP est assez complexe voire impossible sur certaines plateformes.

    Pour commencer, il te faut des notions de multi-threading, de signaux posix et avoir installé l'extension PCNTL.

    Sinon, une solution assez moche mais fonctionnelle consiste à faire tourner plusieurs scripts avec un pipe (popen) mais du coup, le script "parent" ne reçoit pas de notifications de ses fils. Mais ça peut s'imaginer pour découper des traitements lourds non bloquants par exemple un traitement de cronjob sur la bdd.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 36
    Par défaut
    Bonjour et merci Benjamin,

    Mais en fait je viens de trouver une solution qui me semble assez propre AJAX.

    xhr_object.open("GET", url, true);

    Je me suis rendu compte que le troisième argument été pour lancer de manière asynchrone les URLs si il valait true, je l'ai donc testé est victoire cela fait ce que je recherché.

    Si besoin pour les gens de passage voilà mon code source :

    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
    <script>
    	/** Fonction AJAX traitant l'appel fichiers **/
    	function file(fichier) {
    		if(window.XMLHttpRequest) // Pour Firefox
    			xhr_object = new XMLHttpRequest();
    		else if(window.ActiveXObject) // Pour IE
    			xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
    		else
    			return(false);
     
                    //On lance le fichier
    		xhr_object.open("GET", fichier, true);
    		xhr_object.send(null);
    		if(xhr_object.readyState == 4)
    			return(xhr_object.responseText);
    		else
    			return(false);
    	}
    </script>
     
    <?php
    	$uri = "http://localhost/script/";
    	$script = array('script_1.php', 'script_2.php', 'script_3.php');
     
    	foreach($script as $value) {
    		$file_src = "";
    		$file_src = $uri.$value;
     
    		?>
    			<script>
    				file('<?php echo $file_src; ?>');
    			</script>
    		<?php
    	}
    ?>

  4. #4
    Expert confirmé
    Avatar de Benjamin Delespierre
    Profil pro
    Développeur Web
    Inscrit en
    Février 2010
    Messages
    3 929
    Détails du profil
    Informations personnelles :
    Âge : 38
    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
    Par défaut
    C'est vrai que c'est une solution qui permet de contourner le problème mais (car il y a un mais) ça présente certains inconvénients:
    - si le JavaScript est désactivé chez le client, ça ne fonctionne plus
    - vu que le pilotage est effectué chez le client, tu ne peux pas lui confier d'informations critiques
    - c'est pas bien propre de faire rebondir des appels chez le client

    Enfin, si tu t'engages dans cette voie, pense à utiliser une libraire comme jQuery ou Prototype pour faire de l'Ajax afin d'obtenir des scripts cross-browser.

    Voici à quoi ta fonction pourrait ressembler avec jQuery:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    function file (fichier) {
    	if (fichier === undefined)
    		return;
     
    	$.ajax({
    		url: fichier,
    		success: function () {
    			alert('fichier ' + fichier + ' chargé');
    		},
    		error: function () {
    			alert('erreur survenue lors du chargement de ' + fichier);
    		}
    	});
    }

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Février 2011
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 36
    Par défaut
    En fait le script sera toujours lancé par le même PC car c'est pour mon espace admin. Ça me saouler de lancer tous mes scripts 1 à 1 donc comme ça maintenant je suis tranquille ^^; Fainéantise quand tu nous tien.

    Mais merci pour l'info jquery.

    Cependant, histoire de pousser le vis encore plus loin, si on lance le script en ligne de commande AJAX ou Jquery fonctionne ou pas? (Pour une éventuel tâche cron)

  6. #6
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Bah non, Javascript n'est pas installé dans les shell...

    Il ne faut pas confondre appel client et appel serveur, en mode CLI tu fais un appel directement au serveur, tu n'as pas réellement de comportement client. Donc surement pas de HTML, CSS et Javascript en mode CLI.

Discussions similaires

  1. [Batch] Exécuter des commandes sur plusieurs serveurs en même temps
    Par Med_be dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 27/03/2015, 19h05
  2. [WD19] Exécuter plusieurs procédures en même temps
    Par lololebricoleur dans le forum WinDev
    Réponses: 2
    Dernier message: 30/01/2014, 11h39
  3. Exécuter plusieurs fonctions en même temps
    Par vash641 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/05/2009, 15h50
  4. Exécuter plusieurs requêtes en même temps
    Par k_boy dans le forum Bases de données
    Réponses: 9
    Dernier message: 21/02/2008, 12h51
  5. Réponses: 9
    Dernier message: 17/04/2004, 16h32

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