Heim > Artikel > PHP-Framework > Think-Swoole-Tutorial-Konfiguration, Arbeitsprozess, Ctrip-Charme und Verständnis des Swoole-Prozessmodus
Die folgende Tutorial-Kolumne von thinkphp stellt Ihnen die Konfiguration, den Arbeitsprozess, den Ctrip-Charme und das Verständnis des Swoole-Prozessmodus des Think-Swoole-Tutorials vor. Ich hoffe, dass es für Freunde in Not hilfreich ist!
Think-Swoole-Konfiguration, Arbeitsprozess, Ctrip-Charm und Verständnis des Swoole-Prozessmodus
Konfigurationsdatei:
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-Prozess:
'worker_num' => swoole_cpu_num(),
Diese Konfiguration muss eingerichtet werden Der Arbeitsprozess besteht darin, die lokale CPU-Kernnummer abzurufen. Wenn sie manuell auf 1 gesetzt ist, müssen zwei Anforderungen gleichzeitig verarbeitet werden Der andere befindet sich im Wartezustand, nachdem der erste verarbeitet wurde. Der zweite wird sofort verarbeitet, aber sie gehören immer noch zum selben Prozess und die Prozessnummern der beiden Anforderungen sind gleich. Wenn Sie den Wert auf 2 setzen, können zwei Anforderungen gleichzeitig verarbeitet werden und es gibt zwei unterschiedliche Prozessnummern.
Coroutine
In der Swoole-Konfigurationsdatei gibt es auch eine Option zum Konfigurieren der Coroutine:
'coroutine' => [ 'enable' => true, 'flags' => SWOOLE_HOOK_ALL, ],
'enable' => true bedeutet, dass die Coroutine aktiviert wird. Gehen Sie davon aus, dass drei Anforderungen (oder mehr) gleichzeitig verarbeitet werden müssen. Selbst wenn der Arbeitsprozess auf 1 gesetzt ist, können diese drei Anforderungen gleichzeitig verarbeitet werden, aber ihre Prozessnummern sind aufgrund des Arbeitsprozesses gleich ist immer noch einer. Das ist der Charme von Swoole-Coroutinen.
Verstehen Sie den Swoole-Prozessmodus
Konfigurieren Sie die Anzahl der Arbeitsprozesse auf 1, starten Sie dann den Dienst über den Befehl php think swoole, öffnen Sie ein neues Befehlsfenster und führen Sie ps -ef grep swoole | aus, um den Prozessstatus anzuzeigen. Wie in der folgenden Abbildung dargestellt:
Wenn Swoole startet, startet es zunächst einen Master-Hauptprozess und dann einen Manager-Management-Unterprozess. Diese beiden Prozesse verarbeiten die angeforderte Arbeit nicht Die Anfrage wird an den Unterprozessmitarbeiter des Managers übergeben. Wie in der obigen Abbildung zu sehen ist, beträgt die Prozessnummer des Master-Hauptprozesses 30665, die des übergeordneten Prozesses des Manager-Unterprozesses 30666 30665 und die übergeordneten Prozesse des Aufgabenprozesses und des Arbeitsprozesses jeweils 30666.
Konfigurieren Sie die Anzahl der Arbeitsprozesse auf 2, starten Sie den Swoole-Dienst neu und überprüfen Sie den Prozessstatus erneut:
Es ist ersichtlich, dass es zwei Arbeitsprozesse gibt.
Führen Sie pstree -p 31568 aus, Sie können das folgende Beziehungsdiagramm erhalten:
Das obige ist der detaillierte Inhalt vonThink-Swoole-Tutorial-Konfiguration, Arbeitsprozess, Ctrip-Charme und Verständnis des Swoole-Prozessmodus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!