>  기사  >  PHP 프레임워크  >  Think-Swoole 튜토리얼 구성, 작업 프로세스, Ctrip 매력 및 Swoole 프로세스 모드 이해

Think-Swoole 튜토리얼 구성, 작업 프로세스, Ctrip 매력 및 Swoole 프로세스 모드 이해

藏色散人
藏色散人앞으로
2020-09-19 15:21:502722검색

다음 튜토리얼 칼럼인 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을 실행하여 프로세스 상태를 확인합니다. 아래 그림과 같이

Think-Swoole 튜토리얼 구성, 작업 프로세스, Ctrip 매력 및 Swoole 프로세스 모드 이해

Swoole이 시작되면 먼저 마스터 메인 프로세스를 시작한 다음 관리자 관리 하위 프로세스를 시작합니다. 이 두 프로세스는 요청된 작업을 처리하지 않으며, 요청은 관리자의 하위 프로세스 작업자에게 전달됩니다. 위 그림에서 볼 수 있듯이 마스터 메인 프로세스의 프로세스 번호는 30665이고, 매니저 서브 프로세스(30666)의 상위 프로세스는 30665이며, 태스크 프로세스와 작업자 프로세스의 상위 프로세스는 모두 30666이다.

작업자 프로세스 수를 2로 구성하고 Swoole 서비스를 다시 시작한 후 프로세스 상태를 다시 확인합니다.

Think-Swoole 튜토리얼 구성, 작업 프로세스, Ctrip 매력 및 Swoole 프로세스 모드 이해

작업 프로세스 프로세스가 2개임을 알 수 있습니다.

pstree -p 31568을 실행하면 다음 관계 다이어그램을 얻을 수 있습니다.

Think-Swoole 튜토리얼 구성, 작업 프로세스, Ctrip 매력 및 Swoole 프로세스 모드 이해

위 내용은 Think-Swoole 튜토리얼 구성, 작업 프로세스, Ctrip 매력 및 Swoole 프로세스 모드 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 阿dai哥에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제