Les coroutines de fonctions PHP permettent aux fonctions de suspendre et de reprendre l'exécution, améliorant ainsi la simultanéité. En utilisant le mot-clé rendement, l'exécution de la fonction est suspendue et un objet Générateur est renvoyé. Les fonctions peuvent reprendre leur exécution là où elles ont été interrompues. Les coroutines fonctionnelles peuvent être utilisées pour améliorer la concurrence, par exemple pour exécuter des requêtes de base de données simultanément afin d'augmenter la vitesse des requêtes.
Coroutines de fonctions PHP : améliorer la concurrence et l'efficacité du code
Introduction
Les coroutines de fonctions PHP sont un mécanisme qui permet d'exécuter des fonctions en pause et en reprise. Cela en fait un excellent outil pour augmenter la concurrence et tirer parti du code asynchrone.
Concept
La coroutine de fonction suspend l'exécution de la fonction et renvoie une valeur spéciale (objet Générateur) en utilisant le mot-clé yield
关键字来实现。yield
. Les fonctions peuvent reprendre leur exécution là où elles s'étaient arrêtées.
Exemple de code
L'exemple de code suivant montre comment utiliser des coroutines fonctionnelles :
function generator() { echo "Iteration 1\n"; yield; echo "Iteration 2\n"; } $gen = generator(); $gen->current(); // Iteration 1 $gen->next(); // Iteration 2
Un cas pratique
Jetons un coup d'œil à un cas pratique montrant comment utiliser des coroutines fonctionnelles pour améliorer la concurrence :
<?php use React\EventLoop\Factory; use React\MySQL\Factory as MySQLConnectFactory; $loop = Factory::create(); $db = MySQLConnectFactory::create($loop, [ 'host' => 'localhost', 'user' => 'root', 'password' => '', 'database' => 'test', ]); $coros = []; for ($i = 0; $i < 10; $i++) { $coros[] = function() use ($db) { $query = $db->query('SELECT * FROM users WHERE id = 1'); return $query->then(function (ResultSet $rs) { // Process results here }); }; } foreach ($coros as $coro) { $loop->add($coro()); } $loop->run();
Dans ce cas, nous avons créé 10 coroutines de fonctions, chacune exécutant une requête vers la base de données. En utilisant des coroutines fonctionnelles, nous pouvons exécuter ces requêtes simultanément, ce qui améliore considérablement la vitesse des requêtes.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!