ホームページ  >  記事  >  PHPフレームワーク  >  Think-Swoole チュートリアルの構成、作業プロセス、Ctrip の魅力、および Swoole プロセス モードの理解

Think-Swoole チュートリアルの構成、作業プロセス、Ctrip の魅力、および Swoole プロセス モードの理解

藏色散人
藏色散人転載
2020-09-19 15:21:502722ブラウズ

次のチュートリアル コラムでは、Think-Swoole チュートリアルの構成、作業プロセス、Ctrip の魅力、Swoole プロセス モードの理解を紹介します。 Think-Swoole の設定、作業プロセス、Ctrip の魅力、および Swoole プロセス モードの理解

設定ファイル:

app/config/swoole.php

'server'     => [
    'host'      => env('SWOOLE_HOST', '0.0.0.0'), // 监听地址
    'port'      => env('SWOOLE_PORT', 9501), // 监听端口
    'mode'      => SWOOLE_PROCESS, // 运行模式 默认为SWOOLE_PROCESS
    'sock_type' => SWOOLE_SOCK_TCP, // sock type 默认为SWOOLE_SOCK_TCP
    'options'   => [ // 都是给 Swoole 服务的配置,可以根据 Swoole 手册额外增加其它的 Swoole 配置
        'pid_file'              => runtime_path() . 'swoole.pid', //服务启动以后进程 ID 存放文件
        'log_file'              => runtime_path() . 'swoole.log', //Swoole 的日志文件
        'daemonize'             => false, //守护进程模式设置,true 后台运行
        // Normally this value should be 1~4 times larger according to your cpu cores.
        'reactor_num'           => swoole_cpu_num(), //后台启动的 Reactor 线程数
        'worker_num'            => swoole_cpu_num(), //设置启动的 Worker 进程数
        'task_worker_num'       => swoole_cpu_num(), //配置 Task 进程数
        'enable_static_handler' => true, //开启静态文件请求处理功能,需配合 document_root
        'document_root'         => root_path('public'), //配置静态文件根目录
        'package_max_length'    => 20 * 1024 * 1024, //设置最大数据包尺寸,单位为字节
        'buffer_output_size'    => 10 * 1024 * 1024, //配置发送输出缓存区内存尺寸
        'socket_buffer_size'    => 128 * 1024 * 1024, //用于设置客户端连接最大允许占用内存数量
    ],
],

作業プロセス:

'worker_num' => swoole_cpu_num(),

この設定は作業プロセスを設定するためのものです。swoole_cpu_num() はローカル CPU コアの数を取得するためのものです。手動で設定されている場合は、 1, then 同時に処理する必要があるリクエストが 2 つあります。一度に処理できるのは 1 つだけで、もう 1 つは待機状態です。1 つ目のリクエストが処理されると、2 つ目のリクエストはすぐに処理されます。しかし、それらは依然として同じプロセスに属しており、2 つのリクエストのプロセス番号は同じです。これを 2 に設定すると、2 つのリクエストを同時に処理できるようになり、2 つの異なるプロセス番号が存在します。

Coroutine

Swoole 構成ファイルには、コルーチンを構成するための別のオプションがあります:

'coroutine'  => [
        'enable' => true,
        'flags'  => SWOOLE_HOOK_ALL,
    ],
'enable' => ; true は開始を意味しますコルーチン。 3 つ (またはそれ以上) のリクエストを同時に処理する必要があるとします。ワーカー プロセスが 1 に設定されていても、これら 3 つのリクエストは同時に処理できますが、ワーカー プロセスが存在するため、プロセス番号は同じになります。まだ1つです。これがSwooleコルーチンの魅力です。

Swoole プロセス モードを理解する

作業プロセスの数を 1 に設定し、コマンド php think swoole でサービスを開始し、新しいコマンド ウィンドウを開いて実行します。 ps -ef | grep swoole 以下の図に示すように、プロセスのステータスを確認します:

Swoole が開始されると、最初にマスター メイン プロセスが開始され、次にマスター メイン プロセスが開始されます。マネージャー管理サブプロセス これら 2 つのプロセス 要求された作業は処理されず、要求の処理はマネージャーのサブプロセス ワーカーに引き渡されます。上の図からわかるように、マスター メイン プロセスのプロセス番号は 30665、マネージャー サブプロセスの親プロセス 30666 は 30665、タスク プロセスとワーカー プロセスの親プロセスは両方とも 30666 です。

Think-Swoole チュートリアルの構成、作業プロセス、Ctrip の魅力、および Swoole プロセス モードの理解ワーカー プロセスの数を 2 に設定し、Swoole サービスを再起動して、プロセスのステータスを再度確認します。

ワーカー プロセスが 2 つあることがわかります。ワーカープロセスのプロセス。

Think-Swoole チュートリアルの構成、作業プロセス、Ctrip の魅力、および Swoole プロセス モードの理解pstree -p 31568 を実行すると、次の関係図が得られます。

以上がThink-Swoole チュートリアルの構成、作業プロセス、Ctrip の魅力、および Swoole プロセス モードの理解の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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