ホームページ  >  記事  >  バックエンド開発  >  Thinkphp で Swoole を直接クリックします

Thinkphp で Swoole を直接クリックします

coldplay.xixi
coldplay.xixi転載
2020-06-08 10:54:394409ブラウズ


Thinkphp で Swoole を直接クリックします

#Thinkphp での Swoole の使用

Swoole は、運用環境用の PHP 非同期ネットワーク通信エンジンです。 PHP 開発者が高性能の非同期および同時 TCP、UDP、Unix Socket、HTTP、および WebSocket サービスを作成できるようにします。

インストール

まず、Swoole 公式 Web サイトの指示に従って swoole 拡張機能をインストールし、次に think-swoole 拡張機能をインストールします。


composer require topthink/think-swoole=2.0.*使用

使用方法

Swoole は現在 Windows をサポートしていません

Swoole を HttpServer として使用する

コマンド ライン (バージョン 2.0 think-swoole 拡張機能が必要)

コマンド ラインからサーバーを直接起動します。

php think swoole

起動が完了すると、HTTP サーバーが 0.0.0.0:9501 で起動され、現在のアプリケーションに直接アクセスできます。

swoole のパラメーターは、アプリケーション構成ディレクトリの swoole.php で構成できます (詳細については、構成ファイルの内容を参照してください)。

デーモン モードで実行する必要がある場合は、

php think swoole -d

を使用するか、swoole.php ファイルで

'daemonize' =>   true

を設定します。幸いなことに、アプリケーション構成ファイルで app_host

を設定すると、

php think swoole [start|stop|reload|restart]

を含む操作がサポートされます。onWorkerStart の実行時には HTTP_HOST がないため、app_host パラメータをアプリケーション構成ファイル

起動すると、

http://127.0.0.1:9501

を使用してアプリケーションにアクセスできます。

アドレスとポートを構成する必要がある場合は、アプリケーション構成ディレクトリに

swoole.php 構成ファイルを追加して、次のように設定します。

<?phpreturn [
    &#39;host&#39;  => &#39;tp5.com&#39;,
    &#39;port&#39;  =>   9508,];
可以支持Swoole自身的配置参数设置,例如:
<?phpreturn [
    &#39;host&#39;          => &#39;tp5.com&#39;,
    &#39;port&#39;          =>   9508,
    &#39;worker_num&#39;    =>   4,
    &#39;max_request&#39;   =>   1000,];

onWorkerStart および onRequest イベントコールバック メソッドは拡張機能で定義されています (よく知らない場合は置き換えないでください) swoole のイベント コールバック メソッドをカスタマイズする必要がある場合は、設定ファイルでクロージャ定義を使用できます。

<?phpreturn [
    &#39;host&#39;          => &#39;tp5.com&#39;,
    &#39;port&#39;          =>   9508,
    &#39;worker_num&#39;    =>   4,
    &#39;max_request&#39;   =>   1000,
    &#39;WorkerStop&#39;    =>   function($server, $worker_id){
        // 添加你的代码
    },];

または構成ファイルに直接追加します

Swoole をサーバーとして使用する

Swoole サーバーの直接起動をサポートできます (2.0.9 が必要です)バージョン)

php think swoole:server


は 0.0.0.0:9508 で Websocket サービスを開始します。

カスタム パラメータが必要な場合は、config/swoole_server.php で次の内容を設定できます:

タイプサービスタイプホストリスニング アドレスポートリスニング ポートモード実行モードsocketソケット タイプ
設定パラメータ
説明
で、swoole のすべてのパラメータをサポートします。

クロージャを使用して関連イベント コールバックを定義することもサポートされています。

return [
    // 扩展自身配置
    &#39;host&#39;         => &#39;0.0.0.0&#39;, // 监听地址
    &#39;port&#39;         => 9501, // 监听端口
    &#39;type&#39;         => &#39;socket&#39;, // 服务类型 支持 socket http server
    &#39;mode&#39;         => SWOOLE_PROCESS,
    &#39;socket_type&#39;  => SWOOLE_SOCK_TCP,
 
    // 可以支持swoole的所有配置参数
    &#39;daemonize&#39;    => false,
 
    // 事件回调定义
    &#39;onOpen&#39;       => function ($server, $request) {
        echo "server: handshake success with fd{$request->fd}\n";
    },
 
    &#39;onMessage&#39;    => function ($server, $frame) {
        echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
        $server->push($frame->fd, "this is server");
    },
 
    &#39;onRequest&#39;    => function ($request, $response) {
        $response->end("<h1>Hello Swoole. #" . rand(1000, 9999) . "</h1>");
    },
 
    &#39;onClose&#39;      => function ($ser, $fd) {
        echo "client {$fd} closed\n";
    },];

カスタム サービス クラスを使用することもできます

<?php
namespace app\http;use think\swoole\Server;class Swoole extends Server{
    protected $host = &#39;127.0.0.1&#39;;
    protected $port = 9502;
    protected $option = [ 
        &#39;worker_num&#39;=> 4,
        &#39;daemonize&#39; => true,
        &#39;backlog&#39;   => 128
    ];
 
    public function onReceive($server, $fd, $from_id, $data)
    {
        $server->send($fd, &#39;Swoole: &#39;.$data);
    }}

swoole のすべてのコールバック メソッド定義をサポートします (コールバック メソッドはパブリック型である必要があります)

serverType 属性がソケットとして定義されている場合または http、swoole がサポートされています。swoole_websocket_server および swoole_http_server

次に、swoole_server.php:

return [
    &#39;swoole_class&#39;  =>   &#39;app\http\Swoole&#39;,];

に構成パラメーターを追加します。このパラメーターを定義すると、他の構成パラメーターは無効になります。

コマンド ラインでのサーバーの起動

php think swoole:server

リロード|再起動|停止|ステータス操作のサポート

php think swoole:server reload

推奨チュートリアル: 「

PHP ビデオ チュートリアル

以上がThinkphp で Swoole を直接クリックしますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はliqingbo.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。