PHP에서 실시간 출력으로 프로세스 실행
PHP에서 프로세스를 실행할 때 해당 출력을 실시간으로 표시하는 것이 바람직할 수 있습니다. 이 기사에서는 exec() 함수와 설명자 사양의 고유한 구성을 사용하여 이를 달성하는 방법을 살펴봅니다.
실시간 출력 캡처
프로세스의 출력을 캡처하려면 실시간으로 다음 설명자 사양을 지정해야 합니다.
$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 );
이 설정은 stdin을 리디렉션합니다. fgets() 함수를 사용하여 stdout에서 실시간으로 읽을 수 있습니다.
예: 실시간 출력을 통한 Ping
이를 시연하려면 메서드를 사용하여 실시간 출력으로 ping 명령을 실행해 보겠습니다.
$cmd = "ping 127.0.0.1"; $process = proc_open($cmd, $descriptorspec, $pipes, realpath('./'), array()); echo "<pre class="brush:php;toolbar:false">"; if (is_resource($process)) { while ($s = fgets($pipes[1])) { print $s; flush(); } } echo "";
이 코드는 각각을 출력합니다. ping 프로세스 라인을 사용할 수 있게 되면 네트워크 트래픽의 실시간 보기를 제공합니다.
프로세스 종료
사용자가 웹 페이지를 떠날 때 프로세스를 종료하는 것은 도전. ping과 같이 오랫동안 실행되는 프로세스의 경우 페이지가 닫힌 후에도 계속 실행될 수 있습니다.
이 문제를 해결하려면 다음 기술을 사용할 수 있습니다.
이러한 방법을 구현함으로써 개발자는 PHP 스크립트에서 시작된 프로세스가 제대로 작동하는지 확인할 수 있습니다. 사용자가 페이지에서 다른 곳으로 이동할 때 처리됩니다.
위 내용은 PHP 프로세스에서 실시간 출력을 얻으려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!