Introduction à la programmation multithread PHP : Créer un serveur WebSocket à l'aide de l'extension swoole

WBOY
Libérer: 2023-06-29 13:16:01
original
1013 Les gens l'ont consulté

Introduction à la programmation multithread PHP : Créez un serveur WebSocket à l'aide de l'extension swoole

Avant-propos
Dans le développement Web, la communication en temps réel est devenue une exigence de plus en plus importante. Le protocole HTTP traditionnel ne peut pas répondre aux besoins de communication en temps réel et le protocole WebSocket est devenu la solution. Afin d'implémenter un serveur WebSocket en PHP, nous pouvons utiliser l'extension swoole pour créer un serveur multi-thread.

1. Qu'est-ce que le swoole ?
swoole est une extension PHP qui prend en charge l'asynchrone, le multi-threading et les coroutines. En utilisant swoole, nous pouvons créer des serveurs simultanés, des tâches asynchrones, des connexions longues et des applications réseau hautes performances en PHP. Il fournit une série d'API pour implémenter ces fonctions, notamment la prise en charge de différents protocoles tels que TCP, UDP, HTTP, WebSocket, etc.

2. Préparation
Avant de commencer, vous devez vous assurer que vous avez installé l'extension swoole. Vous pouvez utiliser la commande suivante pour installer swoole dans un système Linux :

pecl install swoole
Copier après la connexion

Ou dans un système Windows, vous pouvez télécharger le package binaire swoole depuis le site officiel et l'extraire dans le répertoire d'extension PHP. Ajoutez ensuite la configuration suivante dans le fichier php.ini :

extension=swoole
Copier après la connexion

3. Créez un serveur WebSocket
Ci-dessous, nous utiliserons un exemple simple pour montrer comment utiliser l'extension swoole pour créer un serveur WebSocket.

  1. Tout d'abord, nous créons un fichier server.php, introduisons l'extension swoole et initialisons un serveur WebSocket :

    <?php
    $server = new SwooleWebSocketServer("0.0.0.0", 9501);
    Copier après la connexion
  2. Ensuite, nous pouvons définir certains paramètres du serveur, tels que le nombre de processus de travail et le port d'écoute. :

    $server->set([
     'worker_num' => 4,
     'max_request' => 10000,
    ]);
    Copier après la connexion
  3. Ensuite, nous écoutons l'événement d'ouverture de la connexion WebSocket et le traitons en conséquence :

    $server->on('open', function ($server, $request) {
     echo "new connection: {$request->fd}
    ";
    });
    Copier après la connexion
  4. Ensuite, nous écoutons l'événement de message WebSocket et le traitons en conséquence :

    $server->on('message', function ($server, $frame) {
     echo "received message: {$frame->data}
    ";
     // 可以在这里编写自定义的业务逻辑处理
    });
    Copier après la connexion
  5. Enfin, nous écoutez la connexion WebSocket Fermez l'événement et gérez-le en conséquence :

    $server->on('close', function ($server, $fd) {
     echo "connection closed: {$fd}
    ";
    });
    Copier après la connexion
  6. Enfin, nous démarrons le serveur WebSocket :

    $server->start();
    Copier après la connexion
  7. Exécutez server.php dans la ligne de commande :

    php server.php
    Copier après la connexion

4. Testez le WebSocket serveur
Maintenant que nous avons créé Maintenant que nous avons un serveur WebSocket, nous pouvons utiliser une simple page HTML pour le tester.

  1. Tout d'abord, créez un fichier index.html et écrivez le code suivant :

    <!DOCTYPE html>
    <html lang="en">
    <head>
     <meta charset="UTF-8">
     <title>WebSocket Test</title>
     <script>
         var ws = new WebSocket("ws://localhost:9501");
         ws.onopen = function() {
             console.log("WebSocket connection open.");
         };
         ws.onmessage = function(evt) {
             console.log("received message: " + evt.data);
         };
         ws.onclose = function() {
             console.log("WebSocket connection closed.");
         };
     </script>
    </head>
    <body>
     <h1>WebSocket Test</h1>
    </body>
    </html>
    Copier après la connexion
  2. Ouvrez le navigateur et visitez la page index.html. L'état de la connexion au serveur WebSocket et les messages reçus sont visibles dans la console du navigateur.
  3. Résumé
    En utilisant l'extension swoole, nous pouvons facilement créer un serveur WebSocket en PHP. Dans le développement réel du projet, nous pouvons encore améliorer et optimiser les fonctions du serveur WebSocket en fonction de besoins spécifiques. Dans le même temps, swoole fournit également davantage de fonctions et d'API pouvant être utilisées pour gérer des applications réseau simultanées, asynchrones et hautes performances, permettant un apprentissage et une pratique plus approfondis.

    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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!