>  기사  >  백엔드 개발  >  다중 프로세스 명명된 파이프 통신 [관련 없는 프로세스] PHP 버전

다중 프로세스 명명된 파이프 통신 [관련 없는 프로세스] PHP 버전

藏色散人
藏色散人앞으로
2019-10-19 14:39:192312검색

프로세스 통신:

1. 인터럽트 시스템

2. 명명되지 않은 파이프 [반이중 통신]

# 🎜🎜# 상위-하위 프로세스와 형제 프로세스 간의 통신에만 사용할 수 있으며 이름이 없으며 전송되는 데이터는 형식이 지정되지 않으며 파일에 의존하지 않습니다. 체계.

권장: "

PHP 튜토리얼"

3. 명명된 파이프

는 달성할 수 없는 문제에 사용됩니다. 이름 없는 파이프 작업을 통해 관련되지 않은 프로세스도 통신할 수 있습니다. [파일 설명자에 의존하지만 이 파일은 FIFO 유형 파일, 즉 파이프라인 파일이며 FIFO 원칙을 준수합니다. 즉 대기열이 첫 번째입니다. 첫 번째 아웃]

#🎜 🎜#PS: 프로세스 차단, 비차단 원칙, 파이프라인 파일, 프로세스 [실행 상태 전송]

응용 시나리오의 예: 예를 들어, PHP의 소켓 API를 사용하여 Workerman과 유사한 네트워크 프레임워크를 작성하는 경우 통합 인터럽트 신호 이벤트 처리를 수행할 수 있습니다

인터럽트 핸들러는 인터럽트 요청을 수락하고 파이프 쓰기 끝을 통해 데이터를 쓰는 역할만 담당합니다. 메인 프로세스는 파일 디스크립터의 이벤트를 수신합니다. [읽을 수 있는 이벤트] [비공개로 로그인 가능] 스트림 소켓 관련 API를 살펴보고 처리하기 전에 IO 다중화 기능을 사용하는 방법을 이해해 보겠습니다. 인터럽트 핸들러는 너무 오랫동안 기다리지 않습니다.

물론 언어 간 프로세스 간 통신도 명명된 파이프를 통해 달성할 수 있습니다. #🎜🎜 #

$filePath = $argv[1];
if (posix_mkfifo($filePath,0666)<0){
    fprintf(STDOUT,"命名管道创建错误");
    exit(0);
}
$fd = fopen($filePath,"w");
while (is_resource($fd)){
    fprintf(STDOUT,">");
    $data = fgets(STDIN);
    if ($data){
        fwrite($fd,$data,strlen($data));
    }
}
exit(0);
rrree

위 내용은 다중 프로세스 명명된 파이프 통신 [관련 없는 프로세스] PHP 버전의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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