Maison > cadre php > Swoole > Comment utiliser Swoole pour implémenter l'interaction du serveur WebSocket et de la base de données

Comment utiliser Swoole pour implémenter l'interaction du serveur WebSocket et de la base de données

WBOY
Libérer: 2023-11-07 09:32:28
original
1388 Les gens l'ont consulté

Comment utiliser Swoole pour implémenter linteraction du serveur WebSocket et de la base de données

Comment utiliser Swoole pour implémenter l'interaction du serveur WebSocket et de la base de données

Introduction :
WebSocket est un protocole de communication full-duplex basé sur le protocole TCP, qui peut établir une communication bidirectionnelle en temps réel entre le client et le serveur . Swoole est une extension PHP qui peut facilement implémenter une programmation asynchrone et simultanée hautes performances. Dans cet article, nous présenterons en détail comment utiliser Swoole pour créer un serveur WebSocket et interagir avec la base de données.

Étape 1 : Installez l'extension Swoole

Tout d'abord, nous devons installer l'extension Swoole. Il peut être installé via la commande suivante :

pecl install swoole
Copier après la connexion

Étape 2 : Créer un serveur WebSocket

Ensuite, nous créons un serveur WebSocket, écoutons le port spécifié et établissons une connexion avec le client. Ceci peut être réalisé en utilisant le code suivant :

<?php
$server = new SwooleWebSocketServer("0.0.0.0", 9501);

$server->on('open', function (SwooleWebSocketServer $server, $request) {
    echo "new connection open: {$request->fd}
";
});

$server->on('message', function (SwooleWebSocketServer $server, $frame) {
    echo "received message: {$frame->data}
";
    
    // 处理数据库交互
    $db = new mysqli('localhost', 'username', 'password', 'database');
    $result = $db->query("SELECT * FROM users");
    while ($row = $result->fetch_assoc()) {
        $server->push($frame->fd, json_encode($row));
    }
    $db->close();
});

$server->on('close', function ($ser, $fd) {
    echo "connection close: {$fd}
";
});

$server->start();
?>
Copier après la connexion

Dans le code ci-dessus, nous créons un serveur WebSocket et ajoutons trois fonctions de rappel d'événement. Lorsqu'une connexion est établie, l'événement open sera déclenché ; lorsqu'un message est reçu, l'événement message sera déclenché lorsque la connexion est fermée, le  ; L'événement close sera déclenché. >L'événement sera déclenché. Dans l'événement message, nous pouvons effectuer des opérations interactives sur la base de données. open事件将被触发;当收到消息时,message事件将被触发;当连接关闭时,close事件将被触发。在message事件中,我们可以进行数据库的交互操作。

步骤三:与数据库交互

message事件回调函数中,我们使用了MySQLi扩展来与数据库进行交互。首先,我们创建了一个$db对象,并使用mysqli的构造函数连接到数据库。接着,我们执行了一条查询语句,并通过while循环将查询结果发送给客户端。最后,我们关闭了数据库连接。

需要注意的是,为了安全起见,我们应该将数据库的相关信息(如用户名和密码)设置为环境变量,并通过getenv()函数来获取这些值,以避免直接暴露在代码中。

步骤四:运行服务器

最后,我们使用命令行来运行上述代码。在命令行中切换到代码所在的目录,并执行以下命令:

php server.php
Copier après la connexion

如果一切正常,你将看到WebSocket服务器成功启动,并等待客户端的连接。当有客户端连接到服务器时,open事件将被触发,并在命令行中显示连接的ID。当收到客户端发来的消息时,message事件将被触发,并在命令行中显示收到的消息。当连接关闭时,close事件将被触发,同样在命令行中显示连接的关闭。

总结:
本文详细介绍了如何使用Swoole实现WebSocket服务器与数据库的交互。通过创建WebSocket服务器,并在message

Étape 3 : Interagir avec la base de données 🎜🎜Dans la fonction de rappel d'événement message, nous utilisons l'extension MySQLi pour interagir avec la base de données. Tout d'abord, nous créons un objet $db et utilisons le constructeur de mysqli pour nous connecter à la base de données. Ensuite, nous avons exécuté une instruction de requête et envoyé les résultats de la requête au client via une boucle while. Enfin, nous fermons la connexion à la base de données. 🎜🎜Il convient de noter que pour des raisons de sécurité, nous devons définir les informations liées à la base de données (telles que le nom d'utilisateur et le mot de passe) comme variables d'environnement et obtenir ces valeurs via la fonction getenv() pour éviter directement exposé dans le code. 🎜🎜Étape 4 : Exécuter le serveur🎜🎜Enfin, nous utilisons la ligne de commande pour exécuter le code ci-dessus. Basculez vers le répertoire où se trouve le code sur la ligne de commande et exécutez la commande suivante : 🎜rrreee🎜 Si tout se passe bien, vous verrez que le serveur WebSocket démarre avec succès et attend que le client se connecte. Lorsqu'un client se connecte au serveur, l'événement open sera déclenché et l'ID de connexion sera affiché sur la ligne de commande. Lorsqu'un message du client est reçu, l'événement message sera déclenché et le message reçu sera affiché sur la ligne de commande. Lorsque la connexion est fermée, l'événement close sera déclenché et la fermeture de la connexion sera également affichée sur la ligne de commande. 🎜🎜Résumé : 🎜Cet article détaille comment utiliser Swoole pour implémenter l'interaction entre le serveur WebSocket et la base de données. En créant un serveur WebSocket et en effectuant une interaction avec la base de données dans la fonction de rappel d'événement message, nous pouvons réaliser une communication bidirectionnelle en temps réel. Grâce aux extensions Swoole, nous pouvons facilement effectuer une programmation asynchrone et simultanée hautes performances. J'espère que cet article vous sera utile pour utiliser Swoole pour interagir avec la base de données. 🎜

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!

Étiquettes associées:
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