서버에서 스크립트를 실행할 때 시간이 많이 걸리는 일부 작업은 피할 수 없으며 여러 프로세스의 사용이 필수적입니다. PHP5.5 이후 PHP는 개발 요구 사항을 충족하기 위해 다중 프로세스 요소를 추가하기 시작했습니다.
Note
여러 프로세스를 구현하기 위해 활성화해야 하는 확장 프로그램: pcntl, posix. (추천 학습: PHP 비디오 튜토리얼)
PHP의 다중 프로세스 프로그래밍은 Windows 환경에서 지원되지 않습니다. 이 기사는 주로 Linux 환경에서 개발 및 테스트되었습니다.
간단한 구조 다이어그램
주요 기능
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!