>  기사  >  백엔드 개발  >  PHP의 pcntl_fork를 아시나요?

PHP의 pcntl_fork를 아시나요?

慕斯
慕斯앞으로
2021-05-24 15:29:412793검색

pcntl_fork() 함수에 대하여는 php-pcntl 모듈에서 프로세스를 생성하는데 사용되는 함수입니다. 이 글은 여러분을 PHP의 신비 속으로 안내할 것입니다. 함께 가보시죠! ! !

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.Key point: 자식 프로세스가 부모 프로세스의 상태를 복사하므로 위의 예시 코드가 있습니다. PCntl_fork는 다섯 번째 줄에서 실행되고, 생성된 자식 프로세스의 코드도 다섯 번째 줄부터 실행됩니다. 하위 프로세스가 데이터와 코드를 복사했습니다. 따라서 하위 프로세스에도 동일한 변수가 존재합니다: $one, $two 및 기타 변수

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

那么:上面的for循环,实际会产生多少个子进程?答案是7个,在linux下,用ps命令将可以看到8个进程(1个父进程,7个子进程)
이유: 상위 프로세스는 에 있습니다. ​ ​ ​​ ​​ 나 ​​ ​​ = ​​ ​​ 0 ​​ ​​ 시간 ​​ ​​ , ​​ ​​ 만들다 ​​ ​​ 설립하다 ​​ ​​ 밖으로 ​​ ​​ 하나 ​​ ​​ 개인 ​​ ​​ 아들 ​​ ​​ 입력하다 ​​ ​​ 절차 ​​ ​​ 0 ​​ ​​ , ​​ ​​ 이것 ​​ ​​ 시간 ​​ ​​ 의 ​​ ​​ 아들 ​​ ​​ 입력하다 ​​ ​​ 절차 ​​ ​​ , ​​ ​​ 반품 ​​ ​​ 회의 ​​ ​​ 계속 ​​ ​​ 계속되는 ​​ ​​                     ​​ ​​ 좋아요 ​​ ​​ 순환 ​​ ​​ 반지 ​​ ​​ . ​​ ​​ 만들다 ​​ ​​ 설립하다 ​​ ​​ 밖으로 ​​ ​​ 속 ​​ ​​ 에 ​​ ​​ 부터 ​​ ​​ 본인 ​​ ​​ 의 ​​ ​​ 아들 ​​ ​​ 입력하다 ​​ ​​ 절차 ​​ ​​ . ​​ ​​ 같은 ​​ ​​ 이유 ​​ ​​ : ​​ ​​ ​​ i=0이면 자식 프로세스 0이 생성되며, 이때 자식 프로세스는 계속 루프를 실행합니다. 자신만의 하위 프로세스를 만듭니다.같은 이유: ​ i=0when,createbuildout 하나sub들어와 Cheng0,timechildentersCheng,returnwillcontinue 계속 끈기실행팔로우 . Createbuildoutbelong toselfhimself’ssonintoprocess. 동일: i=1...

권장 학습: "PHP 비디오 튜토리얼"

위 내용은 PHP의 pcntl_fork를 아시나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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