>백엔드 개발 >PHP 문제 >PHP는 다중 프로세스입니까?

PHP는 다중 프로세스입니까?

(*-*)浩
(*-*)浩원래의
2019-09-29 10:20:122536검색

서버에서 스크립트를 실행할 때 시간이 많이 걸리는 일부 작업은 피할 수 없으며 여러 프로세스의 사용이 필수적입니다. PHP5.5 이후 PHP는 개발 요구 사항을 충족하기 위해 다중 프로세스 요소를 추가하기 시작했습니다.

PHP는 다중 프로세스입니까?

Note

여러 프로세스를 구현하기 위해 활성화해야 하는 확장 프로그램: pcntl, posix. (추천 학습: PHP 비디오 튜토리얼)

PHP의 다중 프로세스 프로그래밍은 Windows 환경에서 지원되지 않습니다. 이 기사는 주로 Linux 환경에서 개발 및 테스트되었습니다.

간단한 구조 다이어그램

PHP는 다중 프로세스입니까?

주요 기능

pcntl_fork: 호출 후 두 프로세스의 pid가 반환됩니다. 0은 하위 프로세스이고, 0보다 큰 경우 상위 프로세스가 하위 프로세스의 ID를 가져옵니다. , 0보다 크므로 -1은 생성 실패를 의미합니다.

$pid = $pcntlInstall ? pcntl_fork() : 0;if ($pid == -1) {
    //fork失败
 } elseif ($pid > 0) {
    //父进程
    ......
 } elseif ($pid == 0) {
    //子进程
    ......
 }

pcntl_signal: 하위 프로세스가 종료될 때 전송된 신호를 캡처할 수 있는 신호 처리 콜백 함수를 등록합니다.

/配合pcntl_signal使用
declare (ticks = 1);

//当子进程退出时,会触发该函数,当前子进程数-1
pcntl_signal(SIGCHLD, function ($signo) {
    switch ($signo) {
        case SIGCHLD:
            echo $curChildPro . 'SIGCHLD', PHP_EOL;
            $curChildPro--;
            break;
    }
});

pcntl_wait: 상위 프로세스를 일시 중지하고 대기하는 데 사용됩니다. 하위 프로세스가 종료되도록

위 내용은 PHP는 다중 프로세스입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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