Swoole의 프로세스 간 통신 방법
pipe
pipe는 프로세스 간 데이터 상호 작용에 사용됩니다. Linux 시스템 자체에서는 반이중 통신 파이프를 생성하는 파이프 기능을 제공합니다. 반이중 통신 방식에서는 데이터가 한 방향(한 쪽 끝은 읽기만, 다른 쪽 끝은 쓰기만)으로만 흐를 수 있으며, 관계가 있는 프로세스(상위-하위 프로세스) 간에만 사용할 수 있습니다. (추천 학습: SWOOLE 비디오 튜토리얼 )
파이프라인은 프로세스 간 통신 IPC의 가장 기본적인 방법입니다. 파이프라인에는 명명된 파이프와 익명 파이프의 두 가지 유형이 있습니다.
익명 파이프: 혈액과 관련된 프로세스 간의 데이터 전송을 완료하는 데 특별히 사용됩니다. 명명된 파이프: 두 프로세스 간에 사용할 수 있습니다. Swoole의 파이프는 익명 파이프입니다.
eventfd와 UnixSock을 사용하여 Swoole에서 두 종류의 파이프를 캡슐화하여 프로세스 간 통신을 더욱 유연하게 만듭니다.
Swoole의 프로세스 모듈에는 프로세스 간 통신을 위한 파이프 방법이 내장되어 있습니다. 프로세스 인스턴스를 구축할 때 $pipe_type 옵션이 켜져 있는 한 Swoole의 하위 레이어는 필요한 경우 자동으로 파이프를 생성합니다. 여기서는 설명을 하자면, 이름은 파이프라고 부르지만, 사실 새 버전의 Swoole에서는 기본 통신이 UnixSock을 통해 구현되므로 진정한 의미의 Linux Pipe는 아닙니다.
프로세스 생성
swoole_process::__construct( callable $function, bool $redirect_stdin_stdout = false, int $pipe_type = SOCK_DGRAM, bool $enable_coroutine = false );
파이프 유형 $pipe_type은 세 가지 유형으로 나눌 수 있습니다.
0은 파이프를 생성하지 않음을 의미합니다.
1은 SOCK_STREAM 유형 파이프를 생성함을 의미합니다.
2는 SOCK_DGRAM 유형을 생성함을 의미합니다. Pipe
활성화되면 $redirect_stdin_stdout 이후 $pipe_type 옵션은 사용자 매개변수를 무시하고 강제로 1로 설정됩니다.
파이프 설명자
프로세스가 분기되면 상위 프로세스와 하위 프로세스의 Process 개체는 기본 UnixSocket의 설명자를 저장하는 파이프라는 멤버 변수로 설정됩니다. process can pass 이 파이프 설명자는 데이터를 보내는 데 사용되거나, Process에서 제공하는 읽기/쓰기 인터페이스를 직접 호출하여 데이터를 보내고 받을 수 있습니다.
object(Swoole\Process)#1 (6) { ["pipe"]=>int(4) ["callback"]=>NULL ["msgQueueId"]=>NULL ["msgQueueKey"]=>NULL ["pid"]=>int(287) ["id"]=>NULL}
파이프 읽기 및 쓰기
swoole_process->write(string $data)는 프로세스의 파이프에 데이터를 씁니다.
swoole_process->read(int $buffer_size = 8192)는 프로세스의 파이프에서 데이터를 읽습니다.
위 내용은 Swoole 프로세스 간 통신 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!