Swoole et Workerman sont deux frameworks de communication réseau hautes performances basés sur PHP. Ils disposent d'un large éventail de scénarios d'application en matière d'abonnement et de publication de messages. Cet article explorera les applications spécifiques de Swoole et Workerman dans la mise en œuvre de l'abonnement et de la publication de messages dans PHP et MySQL, et fournira des exemples de code correspondants.
1. Introduction au contexte
Dans de nombreuses applications, il est nécessaire de mettre en œuvre des fonctions telles que l'envoi de messages en temps réel ou la surveillance d'événements, ainsi que la planification distribuée des tâches. La méthode de développement PHP traditionnelle utilise généralement le sondage, ce qui est non seulement inefficace mais consomme également beaucoup de ressources système. Swoole et Workerman peuvent fournir des fonctions d'abonnement et de publication de messages hautes performances de manière asynchrone et non bloquante.
2. Caractéristiques de Swoole et Workerman
3. Scénarios d'application de Swoole et Workerman
<?php $serv = new swoole_websocket_server("0.0.0.0", 9501); $serv->on('open', function($serv, $request) { echo "client connected "; }); $serv->on('message', function($serv, $frame) { foreach ($serv->connections as $fd) { $serv->push($fd, $frame->data); } }); $serv->on('close', function($serv, $fd) { echo "client closed "; }); $serv->start();
<?php require_once __DIR__ . '/vendor/autoload.php'; use WorkermanWorker; $worker = new Worker(); $worker->onWorkerStart = function($worker) { $worker->onMessage = function($connection, $data) { // 处理事件 echo "event happened: " . $data . " "; }; }; Worker::runAll();
IV. Application de Swoole et Workerman combinées avec MySQL
En plus des applications de communication réseau, Swoole et Workerman peuvent également être combinées avec la base de données MySQL pour implémenter. fonction d'abonnement et de publication de messages. Voici un exemple de code qui utilise Swoole et MySQL pour implémenter l'abonnement et la publication des messages :
<?php $server = new SwooleServer('0.0.0.0', 9501, SWOOLE_BASE); $server->on('receive', function ($server, $fd, $from_id, $data) { $conn = new mysqli('localhost', 'username', 'password', 'database'); if ($conn->connect_error) { echo "MySQL Connection Error: " . $conn->connect_error . " "; return; } // 消息入队 $insert_sql = "INSERT INTO message_queue (message) VALUES ('$data')"; $conn->query($insert_sql); $conn->close(); }); $server->on('workerStart', function ($server, $worker_id) { if ($worker_id === 0) { // 消息出队 $timer = SwooleTimer::tick(1000, function () { $conn = new mysqli('localhost', 'username', 'password', 'database'); if ($conn->connect_error) { echo "MySQL Connection Error: " . $conn->connect_error . " "; return; } $query_sql = "SELECT message FROM message_queue LIMIT 1"; $result = $conn->query($query_sql); if ($result && $result->num_rows > 0) { $row = $result->fetch_assoc(); // 处理消息 echo "Processing message: " . $row['message'] . " "; // 消息出队 $delete_sql = "DELETE FROM message_queue WHERE message = '" . $row['message'] . "'"; $conn->query($delete_sql); } $conn->close(); }); } }); $server->start();
Dans le code ci-dessus, les opérations de mise en file d'attente et de retrait des messages sont implémentées via la file d'attente des messages de Swoole, réalisant ainsi les fonctions d'abonnement et de publication des messages.
Résumé :
Que ce soit en termes de push de messages en temps réel ou de surveillance d'événements, Swoole et Workerman proposent des solutions performantes. En combinant avec la base de données MySQL, des scénarios d'application plus complexes peuvent être réalisés. J'espère que grâce à l'introduction et à l'exemple de code de cet article, les lecteurs pourront mieux comprendre la mise en œuvre par Swoole et Workerman de l'abonnement et de la publication des messages en PHP et MySQL.
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!