Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 10 sur 10
  1. #1
    Invité de passage
    Inscrit en
    novembre 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : novembre 2007
    Messages : 2
    Points : 0
    Points
    0

    Par défaut Pseudo-Threads - PHP Asynchrone

    Bonsoir à tous et à toutes.

    Il y a quelques semaines déjà, je me suis amusé à coder en PHP une classe permettant de créer des pseudo-threads (ASYNC), ainsi qu'une classe de gestionnaire pour ces pseudo-threads (ASYNC_MANAGER).
    Ceci nécessite "seulement" que l'extension APC ("Alternate PHP Cache") soit activée.

    Qu'entends-je par "pseudo-threads" ? L'exécution non-bloquante (à priori, en tout cas c'était l'objectif fixé) d'une fonction ou méthode, et l'association éventuelle d'un callback à la fin de son exécution.

    En gros : "Pas besoin d'attendre que l'exécution de la fonction A soit terminée pour lancer l'exécution de la fonction B, et au besoin, attacher à chacune une fonction qui va gérer leur résultat à la fin de leur exécution".

    Les tests que j'ai effectués sont relativement basiques, avec des fonctions ou des méthodes simples, mais démontrent qu'un gain de temps est en effet possible (durée de calcul simulée par des sleep()). Je rend donc publiques ces fichiers pour multiplier les tests, afin de déterminer si c'est une technique à peu près fiable ou pas.

    Le source contenant les 2 classes, ASYNC.php est proprement commenté, le fichier tests.php l'est moins mais présente la plupart des cas de figure et l'utilisation à faire de ces 2 classes.

    Pour tester en mode "normal" :
    http://localhost/async/tests.php?standard=

    Pour tester en mode "asynchrone" :
    http://localhost/async/tests.php

    Je suis bien évidemment ouvert à toute question, toute critique constructive, sachant que le but de ce topic est de mettre à l'épreuve ma modeste "trouvaille".

    Merci et bonne nuit.
    Fichiers attachés Fichiers attachés

  2. #2
    Invité de passage
    Inscrit en
    novembre 2007
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : novembre 2007
    Messages : 2
    Points : 0
    Points
    0

    Par défaut

    Ça y'est, la barre des 100 vues sans aucune réponse a été franchie !

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    janvier 2007
    Messages
    1 451
    Détails du profil
    Informations personnelles :
    Âge : 30
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : janvier 2007
    Messages : 1 451
    Points : 1 942
    Points
    1 942

    Par défaut

    Ben c'est pas souvent que l'on se sert d'appels asynchrones en PHP. Moi je la trouve géniale ta source, cependant j'ai rien actuellement pour m'en servir et t'en remercier ; )

    mais sa reste gg

  4. #4
    Invité de passage
    Inscrit en
    septembre 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : septembre 2008
    Messages : 1
    Points : 1
    Points
    1

    Par défaut

    Près d'un an plus tard...

    Pour ma part, j'ai précisément besoin de faire de l'asynchrone pour optimiser des appels SOAP qui sont terriblement longs. Je vais tester ta source et te tenir au courant.

    L'as-tu améliorée depuis ?

  5. #5
    Invité de passage
    Inscrit en
    juin 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : juin 2009
    Messages : 2
    Points : 2
    Points
    2

    Par défaut

    C'est vrai que de l'asynchrone en PHP est assez hors du commun mais j'en ai aussi besoin pour un cas très particulier donc merci beaucoup

  6. #6
    Invité de passage
    Inscrit en
    septembre 2008
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : septembre 2008
    Messages : 7
    Points : 3
    Points
    3

    Par défaut

    Bonjour à tous,

    je dois moi aussi appeler des web services en asynchrone. Y a-t-il eu des modifications sur ces fichiers depuis ?
    Quels sont les retours d'expérience sur ce sujet ?

    Merci d'avance pour vos réponses,
    Cordialement.

  7. #7
    Invité de passage
    Inscrit en
    novembre 2010
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : novembre 2010
    Messages : 1
    Points : 1
    Points
    1

    Par défaut ...c'est pas top

    hello, je cherche quelque chose sur le même sujet pour faire du multi-threading ... mais ta solution est très très loin d'être ok ...

    Pour ce que tu veux faire tu peux plus simplement utiliser du pcntl_fork :
    http://de2.php.net/manual/en/function.pcntl-fork.php

    Le souci avec ta méthode c'est quelle est pas optimisée, t'imagines les ressources pour faire un calcul en multi-threading : un serveur apache, une connexion socket et tout le temps de la transaction get ... le tout avant l'execution de ton script ...

    donc reste à creuser ...

  8. #8
    Invité de passage
    Homme Profil pro Julien
    Développeur multimédia
    Inscrit en
    juillet 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Nom : Homme Julien
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur multimédia
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : juillet 2012
    Messages : 1
    Points : 1
    Points
    1

    Par défaut

    Bonjour,

    bien des années sont passées par là et ce code ne fonctionne plus ce qui est fort bien dommage.

    J'aimerai vraiment utiliser ce code ou un équivalent car je suis à la recherche d'un résultat similaire.
    Auriez-vous une solution à me proposer ?

    Merci d'avance.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    janvier 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : janvier 2009
    Messages : 46
    Points : 63
    Points
    63

    Par défaut

    Pareil, mon serveur utilisait Xcache par défaut au lieu de APC.

    J'ai tenté un portage vers Xcache, mais on ne peut pas stocker d'objets dedans (pour l'instant), donc c'est pas possible en l'état, c'est plus simple de réactiver APC sur le serveur.

  10. #10
    Rédacteur
    Avatar de doctorrock
    Homme Profil pro Julien Pauli
    Architecte de système d'information
    Inscrit en
    mai 2006
    Messages
    603
    Détails du profil
    Informations personnelles :
    Nom : Homme Julien Pauli
    Âge : 32
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : mai 2006
    Messages : 603
    Points : 2 973
    Points
    2 973

    Par défaut

    Une extension PHP plutot prometteuse est apparue récemment, elle importe la libpthread dans le contexte PHP : http://pthreads.org/ et https://github.com/krakjoe/pthreads
    .: Expert contributeur certifié PHP/ZF :.
    Mes articles - Twitter - GitHub

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •