다음 튜토리얼 칼럼인 thinkphp에서는 Think-Swoole 튜토리얼의 구성, 작업 프로세스, Ctrip의 매력 및 Swoole 프로세스 모드에 대한 이해를 소개할 예정입니다. 도움이 필요한 친구들에게 도움이 되길 바랍니다!
Think-Swoole 구성, 작업 프로세스, 씨트립의 매력과 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 프로세스:
'worker_num' => swoole_cpu_num(),
이 구성은 설정하는 것입니다. 작업 프로세스 예, swoole_cpu_num()은 로컬 CPU 코어 번호를 가져오는 것입니다. 수동으로 1로 설정하면 동시에 처리해야 하는 두 개의 요청이 있으며 한 번에 하나만 처리할 수 있습니다. 다른 하나는 대기 상태입니다. 첫 번째 요청이 처리된 후 두 번째 요청은 즉시 처리되지만 여전히 동일한 프로세스에 속하며 두 요청의 프로세스 번호는 동일합니다. 2로 설정하는 방법은 2개의 요청을 동시에 처리할 수 있으며 두 개의 서로 다른 프로세스 번호가 있게 됩니다.
Coroutine
Swoole 구성 파일에는 코루틴을 구성하는 옵션도 있습니다.
'coroutine' => [ 'enable' => true, 'flags' => SWOOLE_HOOK_ALL, ],
'enable' => true는 코루틴을 활성화한다는 의미입니다. 3개 이상의 요청을 동시에 처리해야 한다고 가정합니다. 작업자 프로세스를 1로 설정하더라도 이 3개의 요청을 동시에 처리할 수 있지만 작업자 프로세스가 동일하므로 프로세스 번호는 동일합니다. 아직 하나. 이것이 Swoole 코루틴의 매력입니다.
Swoole 프로세스 모드 이해
작업 프로세스 수를 1로 구성한 다음 php think swoole 명령을 통해 서비스를 시작하고 새 명령 창을 열고 ps -ef | grep swoole을 실행하여 프로세스 상태를 확인합니다. 아래 그림과 같이
Swoole이 시작되면 먼저 마스터 메인 프로세스를 시작한 다음 관리자 관리 하위 프로세스를 시작합니다. 이 두 프로세스는 요청된 작업을 처리하지 않으며, 요청은 관리자의 하위 프로세스 작업자에게 전달됩니다. 위 그림에서 볼 수 있듯이 마스터 메인 프로세스의 프로세스 번호는 30665이고, 매니저 서브 프로세스(30666)의 상위 프로세스는 30665이며, 태스크 프로세스와 작업자 프로세스의 상위 프로세스는 모두 30666이다.
작업자 프로세스 수를 2로 구성하고 Swoole 서비스를 다시 시작한 후 프로세스 상태를 다시 확인합니다.
작업 프로세스 프로세스가 2개임을 알 수 있습니다.
pstree -p 31568을 실행하면 다음 관계 다이어그램을 얻을 수 있습니다.
위 내용은 Think-Swoole 튜토리얼 구성, 작업 프로세스, Ctrip 매력 및 Swoole 프로세스 모드 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!