>  기사  >  PHP 프레임워크  >  Swoole 프로세스 간 통신 방법

Swoole 프로세스 간 통신 방법

(*-*)浩
(*-*)浩원래의
2019-12-02 14:19:132837검색

Swoole 프로세스 간 통신 방법

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.