Maison >développement back-end >tutoriel php >Cliquez directement sur Swoole dans Thinkphp
🎜>
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.*使用Utiliser
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
Une fois le démarrage terminé, un serveur HTTP sera démarré à 0.0.0.0:9501, qui pourra accéder directement à l'application actuelle.
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' => truedans le fichier swoole.php Remarque : puisqu'il n'y a pas de HTTP_HOST lors de onWorkerStart. est en cours d'exécution, le dernier Heureusement, la définition de app_host dans le fichier de configuration de l'application prend en charge les opérations incluant
php think swoole [start|stop|reload|restart]Puisqu'il n'y a pas de HTTP_HOST lorsque onWorkerStart est en cours d'exécution, il est préférable de définir le paramètre app_host dans le fichier de configuration de l'application Une fois lancée, votre application est accessible en utilisant
http://127.0.0.1:9501. Si vous devez configurer l'adresse et le port, vous pouvez ajouter le
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"; },];Vous pouvez également utiliser une classe de service personnalisée
配置参数 |
描述 |
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:serverSupport reload|restart|stop|status operation
php think swoole:server reloadTutoriel recommandé : "
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!