Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 23/12/2011, 14h02   #1
Invité de passage
 
Inscription : février 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 9
Points : 1
Points : 1
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.
TgZ-le_joker_fou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 14h35   #2
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 031
Points : 5 031
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.
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 15h05   #3
Invité de passage
 
Inscription : février 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 9
Points : 1
Points : 1
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 :
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
	}
?>
TgZ-le_joker_fou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 15h18   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 991
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 991
Points : 5 031
Points : 5 031
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 :
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);
		}
	});
}
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/12/2011, 16h16   #5
Invité de passage
 
Inscription : février 2011
Messages : 9
Détails du profil
Informations forums :
Inscription : février 2011
Messages : 9
Points : 1
Points : 1
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)
TgZ-le_joker_fou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/12/2011, 10h33   #6
Membre Expert
 
Avatar de transgohan
 
Homme Baptiste ROUSSEL
Étudiant
Inscription : janvier 2011
Messages : 812
Détails du profil
Informations personnelles :
Nom : Homme Baptiste ROUSSEL
Localisation : France, Territoire de Belfort (Franche Comté)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 812
Points : 1 533
Points : 1 533
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.
__________________
Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur.
transgohan est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h50.


 
 
 
 
Partenaires

Hébergement Web