php 다 중 프로 세 스 프로 그래 밍 부모 프로 세 스 의 차단 과 비 차단 인 스 턴 스 분석

이 사례 는 phop 다 중 프로 세 스 프로 그래 밍 부모 프로 세 스 의 차단 과 비 차단 을 설명 합 니 다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
php 에서 프로 세 스 가 막 히 는 것 은 부모 프로 세 스 가 하위 프로 세 스 가 종료 되 기 를 기다 리 는 것 입 니 다.
1.php 코드 는 다음 과 같 습 니 다.

<?php

//      
define('FORK_NUMS', 5);

//      pid
$pids = array();

//    5    
for ($i = 0; $i < FORK_NUMS; ++$i) {
  $pids[$i] = pcntl_fork();
  if ($pids[$i] == -1) {
    die('fork error');
  } else if ($pids[$i]) {
    //        ,      
    //   for           ,pcntl_wait        ,              
    //  for           ,     ,      for         
    //         ,           ,       ,          ,       ,  。。
    pcntl_wait($status);
  } else {
    //        
    echo "   ID: ", posix_getppid(), "   ID : ", posix_getpid(), " {$i} \r
"; // 3 , sleep(3); exit; } }
위의 코드 결 과 는 다음 과 같다.

하면,만약,만약...wait for 순환 외 에 어떤 결과 가 나 올 까요?
2.php 코드 는 다음 과 같 습 니 다.

<?php

//      
define('FORK_NUMS', 5);

//      pid
$pids = array();

//    5    
for ($i = 0; $i < FORK_NUMS; ++$i) {
  $pids[$i] = pcntl_fork();
  if ($pids[$i] == -1) {
    die('fork error');
  } else if ($pids[$i]) {

  } else {
    //        
    echo "   ID: ", posix_getppid(), "   ID : ", posix_getpid(), " {$i} \r
"; // 3 , sleep(3); exit; } } // pcntl_waitpid for , for // , 5 , 。 foreach ($pids as $pid) { pcntl_waitpid($pid, $status); }
위의 코드 결 과 는 다음 과 같다.

pcntl_wait 의 두 번 째 인 자 는 주 프로 세 스 가 하위 프로 세 스 가 종 료 될 때 까지 기다 리 지 않 고 후속 코드 를 계속 실행 하도록 설정 할 수 있 습 니 다.
3.php 코드 는 다음 과 같 습 니 다.

<?php

//      
define('FORK_NUMS', 5);

//      pid
$pids = array();

//    5    
for ($i = 0; $i < FORK_NUMS; ++$i) {
  $pids[$i] = pcntl_fork();
  if ($pids[$i] == -1) {
    die('fork error');
  } else if ($pids[$i]) {
    //        ,      
    //   1.php         ,         WNOHANG
    //for      ,        ,          
    pcntl_wait($status, WNOHANG);
  } else {
    //        
    echo "   ID: ", posix_getppid(), "   ID : ", posix_getpid(), " {$i} \r
"; // 3 , sleep(3); exit; } } // 10 , , , sleep(10);
위의 코드 결 과 는 다음 과 같다.

코드 3.phop 은 2.phop 효과 와 마찬가지 로 pcntlwait()함수 의 역할 은 부모 프로 세 스 가 하위 프로 세 스 가 종 료 될 때 까지 기다 리 게 하 는 것 입 니 다.기본적으로 주 프로 세 스 를 막 습 니 다.
더 많은 PHP 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.
본 논문 에서 말 한 것 이 여러분 의 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기