Comment utiliser l'extension Swoole de PHP ?

WBOY
Libérer: 2023-06-02 20:22:02
original
2172 Les gens l'ont consulté

L'extension Swoole de PHP est un framework de communication réseau asynchrone hautes performances. Il peut être utilisé pour créer des applications serveur Web et client basées sur des protocoles tels que TCP, UDP, sockets Unix, etc. Les extensions Swoole sont actuellement largement utilisées dans les serveurs de jeux, les applications de chat, le transfert de données en temps réel et d'autres domaines. Cet article explique comment utiliser l'extension Swoole de PHP.

1. Installez l'extension Swoole

Avant d'utiliser l'extension Swoole, vous devez d'abord installer l'extension. Il peut être installé des deux manières suivantes.

  1. Installez à l'aide de la commande pecl :
pecl install swoole
Copier après la connexion
  1. Compilez et installez manuellement :

Téléchargez le code source depuis le référentiel GitHub de l'extension Swoole :

git clone https://github.com/swoole/swoole-src.git
Copier après la connexion

Décompressez le code source et entrez dans le répertoire :

tar -zxvf swoole-src.tar.gz
cd swoole-src
Copier après la connexion

Exécutez la commande suivante :

phpize
./configure
make
make install
Copier après la connexion

2. Utilisez l'extension Swoole

  1. Démarrez le serveur TCP

Ce qui suit est un exemple de code pour démarrer un simple serveur TCP :

$server = new SwooleServer("127.0.0.1", 9501);

//监听连接进入事件
$server->on('connect', function ($server, $fd) {
    echo "Client: {$fd} Connect.
";
});

//监听数据接收事件
$server->on('receive', function ($server, $fd, $from_id, $data) {
    $server->send($fd, "Server: {$data}");
});

//监听连接关闭事件
$server->on('close', function ($server, $fd) {
    echo "Client: {$fd} Close.
";
});

//启动服务器
$server->start();
Copier après la connexion

Dans le code ci-dessus, nous avons créé un serveur TCP en écoute au port 9501 de 127.0.0.1 . Lorsque le client établit une connexion, l'événement d'entrée de connexion est déclenché. Lorsque le serveur reçoit des données, l'événement de réception de données est déclenché et les données reçues sont renvoyées intactes au client. Lorsque le client ferme la connexion, l'événement de fermeture de connexion est déclenché.

  1. Démarrez le serveur WebSocket

Ce qui suit est un exemple de code pour démarrer un serveur WebSocket simple :

$server = new SwooleWebSocketServer("127.0.0.1", 9501);

//监听WebSocket连接打开事件
$server->on('open', function ($server, $request) {
    echo "Client: {$request->fd} Connect.
";
});

//监听WebSocket消息事件
$server->on('message', function ($server, $frame) {
    $server->push($frame->fd, "Server: {$frame->data}");
});

//监听WebSocket连接关闭事件
$server->on('close', function ($server, $fd) {
    echo "Client: {$fd} Close.
";
});

//启动服务器
$server->start();
Copier après la connexion

Dans le code ci-dessus, nous avons créé un serveur WebSocket écoutant sur le port 9501 de 127.0.0.1. Lorsqu'un client WebSocket se connecte à un serveur, l'événement d'ouverture de connexion est déclenché. Lorsque le client WebSocket envoie un message au serveur, l'événement de message est déclenché et le message reçu est renvoyé intact au client. Lorsque le client WebSocket ferme la connexion, l'événement de fermeture de connexion est déclenché.

  1. Envoyer une requête HTTP asynchrone

Ce qui suit est un exemple de code pour envoyer une requête HTTP asynchrone :

$client = new SwooleCoroutineHttpClient('www.baidu.com', 80);
$client->set(['timeout' => 1]);
$client->setHeaders([
    'Host' => "www.baidu.com",
    "User-Agent" => 'Chrome/49.0.2587.3',
    'Accept' => 'text/html,application/xhtml+xml,application/xml',
    'Accept-Encoding' => 'gzip',
]);
$client->set(['timeout' => 1]);
$client->get('/index.php');
echo $client->body;
Copier après la connexion

Dans le code ci-dessus, nous créons un client HTTP pour envoyer de manière asynchrone une requête GET à www.baidu.com/ chemin index.php, obtenez la réponse et affichez le contenu de la réponse.

Résumé :

Cet article présente comment utiliser l'extension Swoole pour PHP. Grâce à l'extension Swoole, nous pouvons réaliser une communication réseau asynchrone haute performance et créer diverses applications réseau communes. Il convient de noter que l'extension Swoole nécessite PHP7 ou supérieur. De plus, lorsque vous utilisez l'extension Swoole, vous devez faire attention à ses caractéristiques de concurrence élevées pour éviter d'affecter la stabilité de l'application.

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