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.
Partager