Maison  >  Article  >  développement back-end  >  Comment utiliser l'extension Swoole en PHP pour le développement de serveurs

Comment utiliser l'extension Swoole en PHP pour le développement de serveurs

PHPz
PHPzoriginal
2023-05-11 17:13:541780parcourir

Avec le développement d'Internet, les scénarios d'application PHP sont de plus en plus répandus, notamment sous l'exigence d'une concurrence élevée tout en garantissant des performances, l'utilisation des extensions Swoole pour le développement de serveurs est devenue un moyen populaire. Cet article explique comment utiliser l'extension Swoole en PHP pour le développement de serveurs.

1. Introduction à Swoole

Swoole est un framework de communication réseau PHP hautes performances. Il est développé sur la base d'extensions PHP et fournit un support multi-processus et multi-thread. tels que les coroutines ont considérablement amélioré l'efficacité opérationnelle. De plus, Swoole prend également en charge TCP, UDP, WebSocket et d'autres protocoles, ce qui rend très pratique le développement d'applications réseau.

2. Configuration de l'environnement

Avant d'utiliser Swoole pour le développement, nous devons d'abord installer l'extension Swoole sur le serveur. Voici les étapes pour installer Swoole :

1 Exécutez les commandes suivantes sur le serveur pour télécharger et décompresser le package d'installation de Swoole

wget https://github.com. /swoole/swoole- src/archive/v4.3.5.tar.gz
tar zxvf v4.3.5.tar.gz

2. Entrez le dossier décompressé et exécutez la commande suivante pour compiler. et installez#🎜🎜 #

cd swoole-src-4.3.5

phpize
./configure --enable-sockets --enable-mysqlnd
make && make install#🎜 🎜##🎜🎜 #3. Ouvrez le fichier php.ini et ajoutez la configuration d'extension suivante

extension=swoole.so

4. effet

#🎜🎜 #3. Utilisez Swoole pour le développement de serveurs

Ci-dessous, nous prendrons un simple programme de serveur HTTP comme exemple pour présenter comment utiliser Swoole pour le développement de serveurs.

1. Créez un fichier de serveur HTTP, nommez-le http_server.php et écrivez le code suivant :

672e836d6728ab8a2568c56a28ff56e4on("start", function () {

echo "HTTP server started at http://0.0.0.0:9501

";

}); # 🎜🎜#

$server->on("request", function ($request, $response) {

$response->header("Content-Type", "text/plain");
$response->end("Hello World

");
});#🎜🎜 #

$server->start();

?>

2 Exécutez le programme

php http_server.php

. #🎜 🎜#3. Programme de test

Entrez http://127.0.0.1:9501 dans le navigateur Si vous voyez les mots "Hello World", cela signifie que le programme s'exécute avec succès.

4. Mode multi-processus

En mode multi-processus, Swoole peut gérer plusieurs requêtes en même temps, améliorant ainsi les performances simultanées du serveur. Le code ci-dessous montre comment utiliser le multi-traitement dans Swoole.

6af2851ff1b7a536358059aee6d1f28dset([#🎜🎜 #
"worker_num" => 4,
]);

$server->on("start", function () {

echo "HTTP server started at http://0.0.0.0:9501

";

});

$server->on("request", function ($request, $response) {

$response->header("Content-Type", "text/plain");
$response->end("Hello World

");

});#🎜🎜 #

$server->start();

?>

Dans le code ci-dessus, nous utilisons la fonction set pour définir le paramètre worker_num sur 4, ce qui signifie démarrer 4 processus de traitement.

5. Mode coroutine


En mode coroutine, Swoole utilise une coroutine monothread, qui peut mieux contrôler l'utilisation des ressources, réduisant ainsi la surcharge du serveur et améliorant les performances du serveur. Le code ci-dessous montre comment utiliser les coroutines dans Swoole.

3389f6419fa19426010639451c8e7b9eset([#🎜🎜 #

"worker_num" => 1,

]);

$server->on("start", function () {

echo "HTTP server started at http://0.0.0.0:9501

";

});

$server->on("request", function ($request, $response) {

$response->header("Content-Type", "text/plain");
swoole_coroutine_create(function () use ($response) {
    $result = file_get_contents("http://www.baidu.com");
    $response->end($result);
});

});

$server ->start();

?>

Dans le code ci-dessus, nous utilisons la fonction swoole_coroutine_create dans le gestionnaire de requêtes pour activer la coroutine, puis utilisons la fonction file_get_contents pour obtenir le Contenu de la page d'accueil de Baidu et envoyer le résultat au client.

6 Mode WebSocket

En mode WebSocket, Swoole peut communiquer via le protocole WebSocket, réalisant ainsi une communication bidirectionnelle ci-dessous. . Le code montre comment utiliser le protocole WebSocket dans Swoole. $server->on("start", function () {

echo "WebSocket server started at ws://0.0.0.0:9501

";

});
.

$server->on("open ", fonction ($server, $request) {

echo "WebSocket connection open: fd={$request->fd}

";

});

$server->on("message", function ($server, $frame) {

echo "Received message: {$frame->data}

";

$server->push($frame->fd, "Server received: {$frame->data}");

});

#🎜🎜 #$server->on("close", function ($server, $fd) {

echo "WebSocket connection close: fd={$fd}

";
});

$server- >start();

?>


Dans le code ci-dessus, nous utilisons la classe WebSocketServer pour démarrer le serveur WebSocket et le traiter via des événements d'ouverture, de message et de fermeture.

7. Conclusion

Dans cet article, nous avons présenté comment utiliser l'extension Swoole en PHP pour le développement de serveurs, y compris le mode multi-processus, le mode coroutine et le mode WebSocket, afin que Il devient plus facile de garantir les performances du serveur dans des conditions de concurrence élevée. Si vous avez besoin de développement de serveurs hautes performances, vous pouvez aussi bien essayer Swoole.

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!

Déclaration:
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
Article précédent:Classes et objets en PHPArticle suivant:Classes et objets en PHP