PCNTL 함수 족--PHP 다 중 프로 세 스 프로 그래 밍

php 는*nix 시스템 에서 c 와 같은 하위 프로 세 스 생 성,exec 함수 실행 프로그램 사용,처리 신호 등 기능 을 수행 할 수 있 도록 프로 세 스 제어 함수 가 있 습 니 다.
인용 하 다.
Process Control support in PHP implements theUnix style of process creation, program execution, signal handling andprocess termination. Process Control should not be enabled within a webserver environment and unexpected results may happen if any ProcessControl functions are used within a web server environment.
삼가 이 문장 을 초과 작업 에 바 칩 니 다.웹 서버 환경 에서 이 함 수 를 사용 하지 마 십시오.예측 할 수 없 는 결 과 를 초래 할 수 있 기 때 문 입 니 다.또한 windows 는 비 유 닉 스 시스템 으로서 이러한 함수 가 없습니다.PCNTL 은 ticks 를 신호 처리 메커니즘(signal handle callbackmechanism)으로 사용 하여 비동기 사건 을 처리 할 때의 부 하 를 최소 화 할 수 있 습 니 다.무엇이 ticks 라 고 합 니까?Tick 은 코드 세그먼트 에서 해석 기 가 N 개의 저급 문 구 를 실행 할 때마다 발생 하 는 이벤트 입 니 다.이 코드 세그먼트 는 declare 를 통 해 지정 해 야 합 니 다.PCNTL 의 함 수 는 모두 이 정도 가 있 습 니 다:신호 처리 int pcntlalarm(int$seconds)$seconds 초 후 SIGALRM 신 호 를 보 내 는 카운터 bool pcntl 설정signal ( int $signo , callback $handler [, bool $restart_syscalls])$signo 에 이 신 호 를 처리 하 는 리 셋 함 수 를 설정 합 니 다.다음은 5 초 간격 으로 SIGALRM 신 호 를 보 내 고 signalhandler 함수 가 져 온 다음"Caught SIGALRM"의 예 를 인쇄 합 니 다.01. <?php   02. declare (ticks = 1);   03.
  04. function signal_handler( $signal ) {   05. print "Caught SIGALRM " ;   06. pcntl_alarm(5);   07. }   08.
  09. pcntl_signal(SIGALRM, "signal_handler" , true);   10. pcntl_alarm(5);   11.
  12. for (;;) {   13. }   14.
  15. ?> 01. <?php  02. declare (ticks = 1);  03.
  04. function signal_handler( $signal ) {  05. print "Caught SIGALRM " 06. pcntl_alarm(5);  07. 08.
  09. pcntl_signal(SIGALRM, "signal_handler" , true);  10. pcntl_alarm(5);  11.
  12. for (;;) {  13. 14.
  15. ?>
실행 프로그램
void pcntl_exec ( string $path [, array $args [, array $envs ]] )
현재 프로 세 스 공간 에서 지정 한 프로그램 을 실행 합 니 다.c 의 exec 족 함수 와 유사 합 니 다.현재 공간 이란 지정 한 프로그램 을 불 러 오 는 코드 가 현재 프로 세 스 의 공간 을 덮어 쓰 고 이 프로그램 을 실행 하면 프로 세 스 가 끝 납 니 다.
view plain copy to clipboard print ?
  • $dir = '/home/shankka/';   

  • $cmd = 'ls';   
  • $option = '-l';   

  • $pathtobin = '/bin/ls';   
  •   

  • $arg = array($cmd, $option, $dir);   
  •   

  • pcntl_exec($pathtobin, $arg);   
  • echo '123';    //이 줄 에 실행 되 지 않 습 니 다.  

  • ?>  
    view plain copy to clipboard print ?
  • $dir = '/home/shankka/';  

  • $cmd = 'ls';  
  • $option = '-l';  

  • $pathtobin = '/bin/ls';  
  •   

  • $arg = array($cmd, $option, $dir);  
  •   

  • pcntl_exec($pathtobin, $arg);  
  • echo '123';    //이 줄 에 실행 되 지 않 습 니 다.  

  • ?>  
    프로 세 스 int pcntl 만 들 기fork(void)현재 프로 세 스 를 위 한 하위 프로 세 스 int pcntlwait(int&$status[,int$options])는 현재 프로 세 스 를 막 고 현재 프로 세 스 의 하위 프로 세 스 만 종료 하거나 현재 프로 세 스 를 끝 내 는 신 호 를 받 습 니 다.int pcntl_waitpid(int$pid,int&$status[,int$options])기능 은 pcntlwait,waitpid 가 지정 한 pid 를 기다 리 는 하위 프로 세 스 로 구 분 됩 니 다.pid 가-1 일 때 pcntlwaitpid 와 pcntlwait 처럼.pcntlwait 와 pcntlwaitpid 두 함수 중$status 에 하위 프로 세 스 의 상태 정보 가 저장 되 어 있 습 니 다.이 매개 변 수 는 pcntl 에 사용 할 수 있 습 니 다.wifexited、pcntl_wifstopped、pcntl_wifsignaled、pcntl_wexitstatus、pcntl_wtermsig、pcntl_wstopsig、pcntl_waitpid 이 함수 들.01. <?php   02. $pid = pcntl_fork();   03. if ( $pid )   04. {   05. pcntl_wait( $status );   06. $id = getmypid ();   07. echo "parent process,pid {$id}, child pid {$pid} " ;   08. }   09. else   10. {   11. $id = getmypid ();   12. echo "child process,pid {$id} " ;   13. sleep(2);   14. }   15. ?> 01. <?php  02. $pid = pcntl_fork();  03. if ( $pid 04. 05. pcntl_wait( $status );  06. $id = getmypid ();  07. echo "parent process,pid {$id}, child pid {$pid} " 08. 09. else   10. 11. $id = getmypid ();  12. echo "child process,pid {$id} " 13. sleep(2);  14. 15. ?>
    하위 프로 세 스 는 child process 등 문 자 를 출력 한 후 sleep 가 2 초 만 에 끝 났 으 며,부모 프로 세 스 는 하위 프로 세 스 가 종 료 될 때 까지 막 혀 있 습 니 다.프로 세 스 우선 순위:int pcntlgetpriority ([ int $pid [, int $process_identifier]])프로 세 스 의 우선 순위,즉 나 이 스 값 을 가 져 옵 니 다.기본 값 은 0 입 니 다.제 테스트 환경의 Liux(CentOS release 5.2(Final)에서 우선 순 위 는-20 에서 19,-20 은 우선 순위 가 가장 높 고 19 는 가장 낮 습 니 다.(매 뉴 얼 은-20 에서 20)bool pcntlsetpriority ( int $priority [, int $pid [, int $process_identifier]])프로 세 스 의 우선 순 위 를 설정 합 니 다.

    좋은 웹페이지 즐겨찾기