La colonne tutorielle suivante de thinkphp vous présentera la configuration, le processus de travail, le charme Ctrip et la compréhension du mode de processus Swoole du tutoriel Think-Swoole, je l'espère. sera utile aux amis dans le besoin !
Configuration Think-Swoole, processus de travail, charme Ctrip et compréhension du mode de processus Swoole
Fichier de configuration :
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, //用于设置客户端连接最大允许占用内存数量 ], ],
Processus de travail :
'worker_num' => swoole_cpu_num(),
Cette configuration consiste à définir le processus de travail swoole_cpu_num() pour obtenir le nombre de cœurs de processeur locaux s'il est défini manuellement sur. 1, alors Il y a deux demandes qui doivent être traitées en même temps. Une seule peut être traitée à la fois, et l'autre est en attente. Une fois la première traitée, la seconde sera traitée immédiatement. mais elles appartiennent toujours au même processus. Le numéro de processus des deux demandes est le même. Comment le définir sur 2, alors 2 demandes peuvent être traitées en même temps, et il y aura deux numéros de processus différents.
Coroutine
Dans le fichier de configuration Swoole, il existe une autre option pour configurer la coroutine :
'coroutine' => [ 'enable' => true, 'flags' => SWOOLE_HOOK_ALL, ],
'enable' => ; la coroutine. Supposons que 3 demandes (ou plus) doivent être traitées en même temps Même si le processus de travail est défini sur 1, ces trois demandes peuvent être traitées en même temps, mais leurs numéros de processus sont les mêmes car le processus de travail est. encore un. C'est le charme des coroutines Swoole.
Comprendre le mode processus Swoole
Configurer le nombre de processus de travail à 1, puis démarrer le service via la commande php think swoole, ouvrir une nouvelle fenêtre de commande et exécuter ps -ef | grep swoole Vérifiez l'état du processus, comme indiqué dans la figure ci-dessous :
Lorsque Swoole démarre, il démarre d'abord un processus principal principal, puis démarre un sous-processus de gestion du gestionnaire.Ces deux processus Le travail demandé ne sera pas traité et le traitement de la demande est confié au travailleur du sous-processus du gestionnaire. Comme le montre la figure ci-dessus, le numéro de processus du processus principal principal est 30665, le processus parent du sous-processus gestionnaire 30666 est 30665 et les processus parents du processus de tâche et du processus de travail sont tous deux 30666.
Configurez le nombre de processus de travail sur 2, redémarrez le service Swoole et vérifiez à nouveau l'état du processus :
On peut voir qu'il y en a deux processus de processus de travail.
Exécutez pstree -p 31568, vous pouvez obtenir le diagramme de relation suivant :
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!