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 :

Multi-threading en PHP


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Par défaut 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

  2. #2
    Rédacteur
    Avatar de RideKick
    Homme Profil pro
    Directeur technique
    Inscrit en
    Septembre 2006
    Messages
    5 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Septembre 2006
    Messages : 5 914
    Par défaut
    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
    Pas de questions techniques en MP please

    Mon site perso

    Mon profil Viadeo

  3. #3
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    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).

  4. #4
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Par défaut
    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.

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Par défaut
    Eh bien le mieux est que tu passes du temps à le comprendre, car il fait exactement ce que tu veux

  6. #6
    Membre éprouvé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

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

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Par défaut
    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

  7. #7
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Par défaut
    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...

  8. #8
    Membre éprouvé
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Décembre 2006
    Messages
    1 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Décembre 2006
    Messages : 1 080
    Par défaut
    j'y pense,

    vu que mon script je le lance via "CMD" :

    Je sais que sur unix si on fait un :

    le système nous redonnera la main pour travailler ensuite tout en executant le job.

    Il existe quelque chose de similaire avec batch ?

Discussions similaires

  1. Tri multi-threadé
    Par Tifauv' dans le forum C
    Réponses: 8
    Dernier message: 28/06/2007, 09h00
  2. Comment faire du multi thread en php?
    Par sirbaldur dans le forum Bibliothèques et frameworks
    Réponses: 3
    Dernier message: 12/01/2007, 17h56
  3. Réponses: 16
    Dernier message: 30/01/2004, 11h05
  4. [VB6][active x] faire du multi-thread avec vb
    Par pecheur dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 20/05/2003, 12h01
  5. [Kylix] exception qtinft.dll et multi-threading
    Par leclaudio25 dans le forum EDI
    Réponses: 3
    Dernier message: 27/03/2003, 18h09

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