> 백엔드 개발 > PHP 튜토리얼 > 실시간 PHP 프로세스를 실행하고 종료하는 방법은 무엇입니까?

실시간 PHP 프로세스를 실행하고 종료하는 방법은 무엇입니까?

Patricia Arquette
풀어 주다: 2024-12-05 08:26:11
원래의
660명이 탐색했습니다.

How to Execute and Terminate Realtime PHP Processes?

PHP의 실시간 프로세스 실행 및 종료

이 질문은 웹 페이지에서 프로세스를 실행하고 그 결과를 실시간으로 받는 방법을 탐구합니다. , 프로세스가 완료될 때까지 기다릴 필요가 없습니다. 질문의 두 번째 부분은 사용자가 페이지를 떠날 때 그러한 프로세스를 종료하는 방법을 다룹니다.

PHP에서 프로세스를 실행하고 그 출력을 스트리밍하는 한 가지 방법은 proc_open() 함수를 사용하는 것입니다. 이 함수를 사용하면 상위 PHP 프로세스와 독립적으로 실행될 수 있는 하위 프로세스를 생성할 수 있습니다. 실시간 출력을 용이하게 하려면 적절한 파일 설명자와 함께 $descriptorspec 매개변수를 지정하여 프로세스의 stdout 및 stderr 스트림을 캡처할 수 있습니다.

$cmd = "ping 127.0.0.1";

$descriptorspec = array(
   0 => array("pipe", "r"),   // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),   // stdout is a pipe that the child will write to
   2 => array("pipe", "w")    // stderr is a pipe that the child will write to
);

flush();
$process = proc_open($cmd, $descriptorspec, $pipes, realpath('./'), array());
로그인 후 복사

하위 프로세스가 생성되면 루프를 사용하여 지속적으로 stdout 파이프에서 읽고 출력을 인쇄합니다.

echo "<pre class="brush:php;toolbar:false">";
if (is_resource($process)) {
    while ($s = fgets($pipes[1])) {
        print $s;
        flush();
    }
}
echo "
";
로그인 후 복사

사용자가 페이지를 떠날 때 하위 프로세스를 종료하려면 다음을 사용할 수 있습니다. PHP 종료 기능. 종료 기능은 PHP 스크립트가 종료될 때 실행됩니다. 이는 사용자가 브라우저 탭을 닫거나 페이지에서 다른 곳으로 이동할 때 발생할 수 있습니다. 종료 함수에서는 하위 프로세스 핸들에 대해 proc_close()를 호출하여 종료할 수 있습니다.

register_shutdown_function(function() {
  proc_close($process);
});
로그인 후 복사

위 내용은 실시간 PHP 프로세스를 실행하고 종료하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿