>  기사  >  백엔드 개발  >  PHP 프로세스 간에 통신하는 방법에는 여러 가지가 있습니다.

PHP 프로세스 간에 통신하는 방법에는 여러 가지가 있습니다.

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼원래의
2019-09-25 15:46:534358검색

PHP 프로세스 간에 통신하는 방법에는 여러 가지가 있습니다.

프로세스 간 통신은 서로 다른 프로세스 간에 정보를 확산하거나 교환하는 것입니다. 그러면 두 당사자가 모두 액세스할 수 있는 서로 다른 프로세스 간에는 어떤 미디어가 존재합니까? 프로세스의 사용자 공간은 서로 독립적이며 일반적으로 서로 액세스할 수 없습니다. 유일한 예외는 공유 메모리 영역입니다. 그러나 시스템 공간은 "공공 장소"이므로 커널은 분명히 그러한 조건을 제공할 수 있습니다. 그 외에도 양 당사자가 액세스할 수 있는 주변 장치입니다. 이러한 의미에서 두 프로세스는 물론 디스크의 일반 파일을 통해 또는 "레지스트리" 또는 기타 데이터베이스의 특정 항목 및 레코드를 통해 정보를 교환할 수도 있습니다. 넓은 의미에서 이는 프로세스 간 통신의 수단이기도 하지만 일반적으로 "프로세스 간 통신"으로 간주되지 않습니다. 왜냐하면 이러한 통신 방법의 효율성은 너무 낮고, 프로세스 간 통신에 대한 사람들의 요구 사항은 어느 정도의 실시간 성능을 갖는 것이기 때문입니다.

관련 권장 사항: "php 튜토리얼"

Linux에서 프로세스 간 통신의 여러 주요 방법:

1. 파이프(Pipe) 및 명명된 파이프(Named Pipe)

파이프는 다음 용도로 사용할 수 있습니다. 사람과 친척 관련 프로세스 간의 통신을 위해 파이프에 이름이 없다는 한계를 극복하여 파이프의 기능 외에도 관련 없는 프로세스 간의 통신도 가능하게 합니다.

파이프에는 세 가지 유형이 있습니다.

(1) 일반 파이프 파이프: 일반적으로 제한이 있습니다. 첫째, 한 방향으로만 전송할 수 있는 반이중이며, 두 번째는 상위 파이프와 파이프 간에만 사용할 수 있습니다. 하위 프로세스.

(2) 스트림 파이프 s_pipe: 첫 번째 제한이 제거되고 양방향 전송이 가능합니다.

(3) Named Pipe name_pipe: 두 번째 제한이 제거되고 관련되지 않은 여러 프로세스 간에 통신이 수행될 수 있습니다.

2. 신호

신호는 프로세스 간 통신에 사용되는 것 외에도 수신 프로세스에 신호를 보내는 데 사용되는 비교적 복잡한 통신 방법입니다. Linux 외에도 초기 Unix 신호 의미 함수 sigal을 지원하는 것 외에도 의미가 Posix.1 표준을 준수하는 신호 함수 sigaction도 지원합니다(실제로 이 함수는 BSD를 기반으로 합니다. 신호 메커니즘을 통합하고 외부 인터페이스를 통합한 후 BSD는 이를 sigaction 신호 기능으로 다시 구현했습니다.

3. 메시지 큐(Message Queue)

메시지 큐는 Posix 메시지 큐 시스템V 메시지 큐를 포함하는 메시지의 연결된 목록입니다. 충분한 권한이 있는 프로세스는 큐에 메시지를 추가할 수 있고, 읽기 권한이 부여된 프로세스는 큐에서 메시지를 읽을 수 있습니다. 메시지 큐는 소량의 정보를 전달하는 신호의 단점을 극복하고 파이프는 형식화되지 않은 바이트 스트림만 전달할 수 있으며 버퍼 크기는 제한됩니다.

4. 공유 메모리

를 사용하면 여러 프로세스가 동일한 메모리 공간에 액세스할 수 있으며 이는 가장 빠른 IPC 형식입니다. 이는 다른 통신 메커니즘의 작동 효율성을 낮추도록 설계되었습니다. 프로세스 간 동기화 및 상호 배제를 달성하기 위해 세마포어와 같은 다른 통신 메커니즘과 함께 사용되는 경우가 많습니다.

5. 세마포어(semaphore)

는 주로 프로세스 간, 동일한 프로세스의 서로 다른 스레드 간 동기화 수단으로 사용됩니다.

6. 소켓

다른 시스템 간의 프로세스 간 통신에 사용할 수 있는 보다 일반적인 프로세스 간 통신 메커니즘입니다. 원래 Unix 시스템의 BSD 분기용으로 개발되었지만 이제는 일반적으로 다른 Unix 계열 시스템에도 이식 가능합니다. Linux 및 System V 변형 모두 소켓을 지원합니다.

위 내용은 PHP 프로세스 간에 통신하는 방법에는 여러 가지가 있습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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