>백엔드 개발 >PHP 문제 >PHP에서 pcntl_fork의 기능은 무엇입니까?

PHP에서 pcntl_fork의 기능은 무엇입니까?

醉折花枝作酒筹
醉折花枝作酒筹앞으로
2021-05-20 17:39:212215검색

이 글에서는 PHP에서 pcntl_fork의 역할을 소개하겠습니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.

PHP에서 pcntl_fork의 기능은 무엇입니까?

pcntl_fork() 함수는 php-pcntl 모듈에서 프로세스를 생성하는 데 사용되는 함수입니다. (Windows는 지원하지 않습니다.)

php_pcntl 확장 기능을 설치하고 활성화하는 방법은 여기서 소개하지 않고 pcntl_fork() 함수 자체만 분석하겠습니다.

$one = 123;
$one++;
$two = time();
$pid = [];
$pid = pcntl_fork();
$three = time();

: pcntl_fork() 함수가 실행되면 자식 프로세스가 생성됩니다. 하위 프로세스는 현재 프로세스, 즉 상위 프로세스(데이터, 코드 및 상태)에 대한 모든 것을 복사합니다.

1. pcntl_fork()가 자식 프로세스를 성공적으로 생성하면 부모 프로세스에서는 자식 프로세스 번호가 반환되고, 자식 프로세스에서는 0이 반환되며, 실패하면 -1이 반환됩니다.

2. 상위 프로세스의 코드와 데이터를 복사합니다. 그러면 이는 하위 프로세스와 상위 프로세스가 소유한 코드와 데이터가 정확히 동일하다는 것을 의미합니다.

3. 요점: 하위 프로세스는 상위 프로세스의 상태를 복사하므로 위의 샘플 코드가 있습니다. pcntl_fork는 다섯 번째 줄에서 실행되고 생성된 하위 프로세스의 코드도 다섯 번째 줄에서 실행됩니다. . 하위 프로세스가 데이터와 코드를 복사했습니다. 따라서 하위 프로세스에는 $one, $two 등과 같은 변수가 동일하게 존재합니다

for ($i = 0; $i < 3; $i++) {
    $pid = pcntl_fork();
}
sleep(30);

그래서 위의 for 루프에 의해 실제로 몇 개의 하위 프로세스가 생성됩니까? 답은 7입니다. Linux에서는 ps 명령을 사용하면 8개의 프로세스(상위 프로세스 1개, 하위 프로세스 7개)를 볼 수 있습니다

이유: i=0일 때 상위 프로세스가 하위 프로세스 0을 생성하면 이때 하위 프로세스는 프로세스는 루프를 계속 실행합니다. 자신만의 하위 프로세스를 만듭니다. 마찬가지로 i=0이면 자식 프로세스 0이 생성되며, 이때 자식 프로세스는 계속해서 루프를 실행하게 됩니다. 자신만의 하위 프로세스를 만듭니다. 같은 방식으로 i=0이면 자식 프로세스 0이 생성되고 이때 자식 프로세스는 계속해서 루프를 실행합니다. 자신만의 하위 프로세스를 만듭니다. 같은 방식으로: i=1인 경우에도 이런 일이 발생합니다...

추천 학습: php 비디오 튜토리얼

위 내용은 PHP에서 pcntl_fork의 기능은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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