#Thinkphp での Swoole の使用
インストール
まず、Swoole 公式 Web サイトの指示に従って swoole 拡張機能をインストールし、次に think-swoole 拡張機能をインストールします。composer require topthink/think-swoole=2.0.*使用
使用方法
Swoole は現在 Windows をサポートしていませんSwoole を HttpServer として使用するコマンド ライン (バージョン 2.0 think-swoole 拡張機能が必要)コマンド ラインからサーバーを直接起動します。
php think swoole
php think swoole -d
'daemonize' => true
php think swoole [start|stop|reload|restart]
http://127.0.0.1:9501
swoole.php 構成ファイルを追加して、次のように設定します。
<?phpreturn [ 'host' => 'tp5.com', 'port' => 9508,]; 可以支持Swoole自身的配置参数设置,例如: <?phpreturn [ 'host' => 'tp5.com', 'port' => 9508, 'worker_num' => 4, 'max_request' => 1000,];
<?phpreturn [ 'host' => 'tp5.com', 'port' => 9508, 'worker_num' => 4, 'max_request' => 1000, 'WorkerStop' => function($server, $worker_id){ // 添加你的代码 },];
Swoole をサーバーとして使用する
Swoole サーバーの直接起動をサポートできます (2.0.9 が必要です)バージョン)php think swoole:serverは 0.0.0.0:9508 で Websocket サービスを開始します。 カスタム パラメータが必要な場合は、config/swoole_server.php で次の内容を設定できます:
設定パラメータ | 説明 |
サービスタイプ | |
リスニング アドレス | |
リスニング ポート | |
実行モード | |
ソケット タイプ |
クロージャを使用して関連イベント コールバックを定義することもサポートされています。
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"; },];
<?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); }}
serverType 属性がソケットとして定義されている場合または http、swoole がサポートされています。swoole_websocket_server および swoole_http_server
return [ 'swoole_class' => 'app\http\Swoole',];
php think swoole:server
php think swoole:server reload
PHP ビデオ チュートリアル」
以上がThinkphp で Swoole を直接クリックしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。