-
Multi-threading en PHP
Bonjour,
J'ai réalisé un script PHP que j'utilise en ligne de commande. Ce script parse un fichier texte avec des adresse IP puis réalise différents tests réseaux (ping, etc...).
Pour aller plus vite à effectuer mes tests sur mes adresses IP (plus de 1000 adresses) j'ai copié plusieurs fois le même script avec un fichier d'adresses IP à parser puis j'execute les scripts.
Pas terrible comme méthode !
J'aimerai donc savoir s'ile st possible de faire du Multi-threading en PHP ?
J'ai trouvé cette article mais je ne comprend pas trop l'utilisation des fonction décrites : http://www.atelierphp5.com/multi-threading-en-php.html
Avez vous déjà fais ce genre de chose, si oui, comment ?
merci d'avance
Arnaud
-
oui et non , la solution : ajax !
Tu devrais chercher de ce cote la .... il faut que tu lance tes scripts en asynchrones , de mémoire il y a même des classes de ce type deja faites sur phpclasses.org :king:
-
Moui... Si la problématique est une question de performances, je doute fort qu'AJAX soit une solution.
Cela dit, le script proposé par Wez semble tout à fait fonctionnel. Son 2° bloc de code semble parfaitement répondre à ton problème. L'as-tu essayé ?
Le premier bloc foreach ouvre des connexions non bloquantes à tous les serveurs à la fois, puis le bloc while attend les retours. Le dernier bloc foreach affiche les résultats une fois qu'ils sont tous arrivés (ou ont subit un timeout).
-
Bah en faite moi mon script est simple :
1. parser un fichier ini
2. parser un fichier texte qui contient des adresses IP
> 3. tester cette adresse IP : test avec un ping + test sur le partage réseau c$.
> 4.1 Si les tests sont ok : je fais un system() où j'applique une application externe à l'ip correspondante.
> 4.2 Si les tests ne sont pas ok : on passe à l'ip suivante.
Le soucie de ce script qui fonctionne parfaitement, c'est que je traite une IP par IP et cela est très long pour traiter tout le fichier.
Mon idée : en faire plusieurs en même temps en parallèle.
Le code de Wez je ne le comprend pas totalement pour l'adapter à mon application.
-
Eh bien le mieux est que tu passes du temps à le comprendre, car il fait exactement ce que tu veux ;)
-
il est vrai que Ajax n'est pas très conseillé pour cela
(usine à gaz dans ces cas là)
as tu regardé ?
http://sitten-polizei.de/php/threads-0.1alpha.tar.gz
-
Je vais optimiser mon script et en faire une classe PHP5 pour facilité sont utilisation (je test mon script depuis hier soir, et aucun plantage ;) )
Yogui, serait il possible de m'aidé à implémenté le script de Wez à mon script car j'ai vraiment du mal à comprend son script...
merci d'avance de ta réponse...
-
j'y pense,
vu que mon script je le lance via "CMD" :
Code:
php.exe scanner.php
Je sais que sur unix si on fait un :
Code:
php.exe scanner.php &
le système nous redonnera la main pour travailler ensuite tout en executant le job.
Il existe quelque chose de similaire avec batch ?