Outils pour utilisateurs

Outils du site


informatique:php:multithread

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
informatique:php:multithread [04/09/2009 14:41] cyrilleinformatique:php:multithread [28/07/2025 16:16] (Version actuelle) – [Queue Systems] cyrille
Ligne 3: Ligne 3:
 La programmation multithreadée en PHP est un véritable casse tête, en effet il n’existe pas à l’heure d’aujourd’hui de véritable moyen de faire du multithread en PHP 5. Et puis cela peut poser des problèmes de partage des ressources, je pense notamment à l'accès aux base de données. La programmation multithreadée en PHP est un véritable casse tête, en effet il n’existe pas à l’heure d’aujourd’hui de véritable moyen de faire du multithread en PHP 5. Et puis cela peut poser des problèmes de partage des ressources, je pense notamment à l'accès aux base de données.
  
-===== Utilisation "vrais" threads =====+  * Php8 fibers 
 +    * It is important the concurrent execution does not mean simultaneous execution. The Fiber and the main execution flow does not happen at the same time. It is up to the main execution flow to start a Fiber, and when it starts, the Fiber is executed exclusively. The main thread cannot observe, terminate, or suspend a Fiber while the Fiber is being executed.  
 +    * https://php.watch/versions/8.1/fibers 
 +  * https://revolt.run/ 
 +    * Revolt is a rock-solid event loop for concurrent PHP applications. The usual PHP application spends most of its time waiting for I/O. While PHP is single threaded, cooperative multitasking can be used to allow for concurrency by using the waiting time to do different things. 
 +  * https://reactphp.org/ 
 +    * ReactPHP is a low-level library for event-driven programming in PHP. 
 +  * https://amphp.org/ 
 +    * AMPHP provides higher-level libraries using non-blocking I/O under the hood. Fibers allow these libraries to just work, no matter whether they're used in concurrent or traditional contexts.  
 + 
 +===== Utilisation de "vrais" threads =====
  
 Ce n'est pas possible de le faire directement en Php, mais certains ceux sont lancés dans l'aventure de faire une extension "PECL", qui donne donc une "DLL" : Ce n'est pas possible de le faire directement en Php, mais certains ceux sont lancés dans l'aventure de faire une extension "PECL", qui donne donc une "DLL" :
Ligne 10: Ligne 20:
 [[http://cvs.php.net/viewvc.cgi/pecl/threads/|Code source]]. [[http://cvs.php.net/viewvc.cgi/pecl/threads/|Code source]].
  
-===== Utilisation des streams =====+[[https://www.php.net/manual/en/book.pthreads.php|pthreads]] is abandoned, consider using parallel instead.  
 + 
 +Utilisez l’extension de concurrence parallèle Parallel pour réaliser le multithreading en PHP: 
 +  * https://www.php.net/manual/en/parallel.setup.php 
 +  * parallel requires a build of PHP with ZTS (Zend Thread Safety) enabled (--enable-zts, or on non-Windows systems prior to PHP 8.0.0, --enable-maintainer-zts)  
 + 
 +===== Multiplexing ===== 
 + 
 +On peut faire sans le Threading en faisant du multiplexage de scripts. 
 + 
 +==== Utilisation des streams ====
 Une utilisation astucieuse des streams permet d’effectuer simultanément plusieurs requêtes. La méthode est expliquée par [[http://netevil.org/blog/2005/may/guru-multiplexing|Wez Furlong]]. Une utilisation astucieuse des streams permet d’effectuer simultanément plusieurs requêtes. La méthode est expliquée par [[http://netevil.org/blog/2005/may/guru-multiplexing|Wez Furlong]].
  
-===== Utilisation de Curl =====+==== Queue Systems ==== 
 + 
 +Consommer des jobs via Redis, Beanstalkd. 
 +==== Utilisation de Curl ==== 
 + 
 +L’extension Curl pour PHP, qui permet d’exécuter simplement des requêtes à travers différents protocoles, offre aussi une possibilité de simili multithread avec des requêtes asynchrones. 
 +  * [[http://www.ibuildings.com/blog/archives/811-Multithreading-in-PHP-with-CURL.html|Multithreading-in-PHP-with-CURL]] 
 +  * [[https://docs.guzzlephp.org/en/stable/quickstart.html#concurrent-requests|Guzzle async/concurrent requests]] 
 +  * [[https://lbacik.medium.com/asynchronous-php-1d94af9e0f19|Asynchronous PHP (with Curl)]]
  
-L’extension Curl pour PHP, qui permet d’exécuter simplement des requêtes à travers différents protocoles, offre aussi une possibilité de simili multithread lors de requetes distantes. Tout est expliqué dans cet [[http://www.ibuildings.com/blog/archives/811-Multithreading-in-PHP-with-CURL.html|article sur ibuildings]]. 
  
-===== Utillisation d’AJAX =====+==== Utillisation d’AJAX ====
  
 La dernière solution consiste à créer une page mère, qui lancée depuis un navigateur, ferrais différentes requêtes AJAX vers plusieurs scripts qui seraient alors traités simultanément. Attention, il existe généralement une limite d’appels simultanés sur les navigateurs web. La dernière solution consiste à créer une page mère, qui lancée depuis un navigateur, ferrais différentes requêtes AJAX vers plusieurs scripts qui seraient alors traités simultanément. Attention, il existe généralement une limite d’appels simultanés sur les navigateurs web.
  
informatique/php/multithread.1252068082.txt.gz · Dernière modification : (modification externe)

Sauf mention contraire, le contenu de ce wiki est placé sous les termes de la licence suivante : CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki