PHP7.0 est l'un des langages de programmation côté serveur les plus couramment utilisés. Il possède une interface conviviale, facile à apprendre, des fonctions puissantes et une riche bibliothèque d’extensions. En termes de programmation simultanée, PHP7.0 dispose également de nombreux excellents outils et technologies. Cet article explique comment effectuer une programmation simultanée en PHP7.0.
1. Qu'est-ce que la programmation simultanée
La programmation simultanée fait référence à une programmation qui permet d'exécuter plusieurs tâches en même temps via plusieurs threads, processus ou coroutines. En programmation, l’utilisation efficace des techniques de concurrence peut améliorer les performances et le débit du programme.
2. Outils de programmation simultanée de PHP7.0
Dans PHP7.0, il existe de nombreux outils parmi lesquels choisir pour écrire des programmes simultanés. Voici quelques outils couramment utilisés :
1 Extension PCNTL
L'extension PCNTL fournie par PHP fournit un ensemble de fonctions de gestion des processus et de traitement du signal. Grâce à cette extension, vous pouvez facilement gérer plusieurs tâches exécutées dans le même processus en même temps.
2. extension pthread
pthread extension est une extension PHP utile qui implémente l'interface de thread POSIX en PHP. Cette extension fournit diverses fonctionnalités pour créer, détruire, synchroniser et communiquer des threads.
3. Extension Swoole
Swoole est une extension PHP qui fournit des fonctions de programmation asynchrone, non bloquantes et coroutines. Cette extension est devenue l'un des projets open source les plus populaires en PHP, fournissant un cadre de programmation simultané complet comprenant des protocoles réseau, des pools de threads, des tâches asynchrones, etc.
4, protocole AMQP
Protocole AMQP, le nom complet est Advanced Message Queuing Protocol, est un protocole de file d'attente de messages standard. Grâce au protocole AMQP, des opérations asynchrones et distribuées peuvent être mises en œuvre, et une programmation simultanée peut être facilement mise en œuvre.
3. Technologies et exemples d'utilisation de PHP7.0 pour la programmation simultanée
Voici quelques technologies et exemples d'utilisation de PHP7.0 pour la programmation simultanée :
# 🎜🎜#1. Utilisez l'extension PCNTLLa manière classique de synchroniser plusieurs tâches consiste à utiliser le mécanisme fork. Grâce à cette technologie, vous pouvez démarrer plusieurs sous-processus en un seul processus pour exécuter plusieurs tâches simultanément. Voici un exemple de code :$NUM_CHILDREN = 5; $pid_array = array(); for ($i = 0; $i < $NUM_CHILDREN; ++$i) { $pid = pcntl_fork(); if ($pid == -1) { die('could not fork'); } else if ($pid) { $pid_array[] = $pid; } else { sleep(5); exit(0); } } while(count($pid_array) > 0) { foreach($pid_array as $key => $pid) { $res = pcntl_waitpid($pid, $status, WNOHANG); if($res == -1 || $res > 0) { unset($pid_array[$key]); } } }
class MyThread extends Thread { public function run() { echo "Task started"; sleep($this->rand(1, 5)); echo "Task completed"; } } $thread1 = new MyThread(); $thread1->start(); $thread2 = new MyThread(); $thread2->start(); $thread1->join(); $thread2->join();
$server = new swoole_http_server("127.0.0.1", 9501); $server->on('request', function ($request, $response) { $response->header("Content-Type", "text/plain"); $response->end("Hello World "); }); $server->start();
require __DIR__ . '/vendor/autoload.php'; use PhpAmqpLibConnectionAMQPConnection; $connection = new AMQPConnection('localhost', 5672, 'guest', 'guest'); $channel = $connection->channel(); $channel->queue_declare('task_queue', false, true, false, false); echo ' [*] Waiting for messages. To exit press CTRL+C', " "; $callback = function($msg) { echo " [x] Received ", $msg->body, " "; sleep(substr_count($msg->body, '.')); echo " [x] Done", " "; }; $channel->basic_qos(null, 1, null); $channel->basic_consume('task_queue', '', false, true, false, false, $callback); while(count($channel->callbacks)) { $channel->wait(); } $channel->close(); $connection->close();
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!