Précédent   Forum des professionnels en informatique > PHP > Langage > Contribuez
Contribuez Proposez vos articles, cours, tutoriels, FAQ, sources, etc. pour PHP
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 22/11/2007, 02h59   #1
Invité de passage
 
Inscription : 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
Type de fichier : php ASYNC.php (6,7 Ko, 402 affichages)
Type de fichier : php tests.php (3,6 Ko, 245 affichages)
Rognvaldr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/12/2007, 21h18   #2
Invité de passage
 
Inscription : novembre 2007
Messages : 2
Détails du profil
Informations forums :
Inscription : novembre 2007
Messages : 2
Points : 0
Points : 0
Ça y'est, la barre des 100 vues sans aucune réponse a été franchie !
Rognvaldr est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2007, 13h23   #3
Membre Expert
 
Inscription : janvier 2007
Messages : 1 452
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : janvier 2007
Messages : 1 452
Points : 1 914
Points : 1 914
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
kaymak est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/09/2008, 16h08   #4
Invité de passage
 
Inscription : septembre 2008
Messages : 1
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 1
Points : 1
Points : 1
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 ?
cybwarrior est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2009, 20h06   #5
Invité de passage
 
Inscription : juin 2009
Messages : 2
Détails du profil
Informations forums :
Inscription : juin 2009
Messages : 2
Points : 2
Points : 2
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
Buburs est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/03/2010, 16h16   #6
Invité de passage
 
Inscription : septembre 2008
Messages : 7
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 7
Points : 3
Points : 3
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.
Sylvain_MU est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 16h49   #7
Invité de passage
 
Inscription : 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 ...
ichiriac 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 12h18.


 
 
 
 
Partenaires

Hébergement Web