🎜>
Swoole est un moteur de communication réseau asynchrone PHP pour les environnements de production. Permet aux développeurs PHP d'écrire des services TCP, UDP, Unix Socket, HTTP et WebSocket asynchrones et simultanés hautes performances. InstallationInstallez d'abord l'extension swoole selon les instructions sur le site officiel de Swoole, puis installez l'extension think-swoole.
composer require topthink/think-swoole=2.0.*使用
Swoole ne prend actuellement pas en charge Windows
Utiliser Swoole comme serveur Http
Démarrez le serveur directement à partir de la ligne de commande. php think swoole
Les paramètres Swoole peuvent être configurés dans swoole.php dans le répertoire de configuration de l'application (reportez-vous au contenu du fichier de configuration pour plus de détails).
Si vous devez exécuter en mode démon, vous pouvez utiliser
php think swoole -d
ou définir
'daemonize' => true
php think swoole [start|stop|reload|restart]
http://127.0.0.1:9501
fichier de configuration swoole.php dans le répertoire de configuration de l'application, puis définir :
<?phpreturn [ 'host' => 'tp5.com', 'port' => 9508,]; 可以支持Swoole自身的配置参数设置,例如: <?phpreturn [ 'host' => 'tp5.com', 'port' => 9508, 'worker_num' => 4, 'max_request' => 1000,];
Les événements onWorkerStart et onRequest les méthodes de rappel sont définies dans l'extension (veuillez ne pas les remplacer si vous ne les connaissez pas). Si vous devez personnaliser la méthode de rappel d'événement de swoole, vous pouvez utiliser la définition de fermeture dans le fichier de configuration.
<?phpreturn [ 'host' => 'tp5.com', 'port' => 9508, 'worker_num' => 4, 'max_request' => 1000, 'WorkerStop' => function($server, $worker_id){ // 添加你的代码 },];
Ou ajoutez
directement dans le fichier de configuration pour utiliser Swoole comme serveur serveurphp think swoole:server
démarrera un service Websocket à 0.0.0.0:9508.
Si vous avez besoin de paramètres personnalisés, vous pouvez les configurer dans config/swoole_server.php, notamment :
Paramètres de configuration | Description |
tapez | Type de service |
hôte | Adresse d'écoute |
port | Port d'écoute |
mode | Mode d'exécution |
socket | Type de socket |
et prend en charge tous les paramètres de swoole.
Il prend également en charge l'utilisation de fermetures pour définir les rappels d'événements associés.return [ // 扩展自身配置 'host' => '0.0.0.0', // 监听地址 'port' => 9501, // 监听端口 'type' => 'socket', // 服务类型 支持 socket http server 'mode' => SWOOLE_PROCESS, 'socket_type' => SWOOLE_SOCK_TCP, // 可以支持swoole的所有配置参数 'daemonize' => false, // 事件回调定义 'onOpen' => function ($server, $request) { echo "server: handshake success with fd{$request->fd}\n"; }, 'onMessage' => function ($server, $frame) { echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n"; $server->push($frame->fd, "this is server"); }, 'onRequest' => function ($request, $response) { $response->end("<h1>Hello Swoole. #" . rand(1000, 9999) . "</h1>"); }, 'onClose' => function ($ser, $fd) { echo "client {$fd} closed\n"; },];
配置参数 | 描述 |
type | 服务类型 |
host | 监听地址 |
port | 监听端口 |
mode | 运行模式 |
socket | Socket type |
<?php namespace app\http;use think\swoole\Server;class Swoole extends Server{ protected $host = '127.0.0.1'; protected $port = 9502; protected $option = [ 'worker_num'=> 4, 'daemonize' => true, 'backlog' => 128 ]; public function onReceive($server, $fd, $from_id, $data) { $server->send($fd, 'Swoole: '.$data); }}
Prend en charge toutes les définitions de méthodes de rappel de swoole (les méthodes de rappel doivent être de type public)
Si l'attribut serverType est défini comme socket ou http , swoole est pris en charge swoole_websocket_server et swoole_http_server
Ajoutez ensuite les paramètres de configuration dans swoole_server.php :
return [ 'swoole_class' => 'app\http\Swoole',];
Après avoir défini ce paramètre, les autres paramètres de configuration ne sont plus valides.
php think swoole:server
php think swoole:server reload
Tutoriel vidéo PHP
"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!