Gérer du multithread en PHP avec pthreads
PHP est par “défaut” un langage mono-thread et ne permet donc, par définition, de
ne gérer qu’un seul processus à la fois. Or il peut s’avérer extrêmement avantageux
de gérer plusieurs processus afin d’effectuer un certain nombre de tâches en parallèle.
Il existe heureusement une extension PECL pour faire cela :
pthreads
.
« pthreads est une API orientée objet qui permet le multi-threading en PHP. Il inclut tous les outils nécessaires pour créer des applications multi-threadées pour le Web ou pour la console. Les applications PHP peuvent créer, lire, écrire, exécuter et synchroniser des Threads, des Workers, et des objets Threaded. »
Tout cela de manière très simple. La seule contrainte est que l’extension se base sur les threads POSIX et nécessitera donc l’installation du projet pthreads-win32 pour pouvoir fonctionner sous Windows.
Voici un exemple très simple de l’utilisation de l’extension :
J’ai par ailleurs publié une image Docker permettant d’exécuter PHP 7.0 préconfiguré avec l’extension pthreads. Tout cela est disponible sur le Docker Hub.