> 백엔드 개발 > PHP 튜토리얼 > PHP의 셸 명령에서 실시간 출력을 얻으려면 어떻게 해야 합니까?

PHP의 셸 명령에서 실시간 출력을 얻으려면 어떻게 해야 합니까?

Mary-Kate Olsen
풀어 주다: 2024-12-03 20:03:16
원래의
319명이 탐색했습니다.

How Can I Get Real-Time Output from Shell Commands in PHP?

PHP의 쉘 실행을 통한 실시간 출력

shell_exec 및 exec와 같은 함수를 사용하는 PHP의 쉘 실행은 다음과 상호작용하는 데 도움이 될 수 있습니다. 운영 체제. 그러나 기본적으로 이러한 함수는 명령이 완료된 후에만 전체 출력을 표시합니다. 이로 인해 진행 상황을 모니터링하거나 실시간 업데이트를 표시하는 기능이 제한됩니다.

해결책: 실시간 출력 활용

실시간 출력 표시를 달성하기 위해 PHP는 두 가지 주요 기능을 제공합니다. 옵션:

  1. 병렬용 popen() 상호 작용:

    popen()을 사용하면 하위 프로세스와 양방향 통신 채널을 설정할 수 있습니다. 이를 통해 마치 파일인 것처럼 하위 프로세스를 읽고 쓸 수 있습니다. 루프와 fread()를 사용하면 출력을 캡처하고 동적으로 표시할 수 있습니다.

  2. 직접 출력의 경우 passthru():

    더 간단한 접근 방식을 위해 passthru()를 사용하여 명령 출력을 브라우저에 직접 인쇄할 수 있습니다. 중간 저장 없이 결과를 스트리밍하는 편리한 방법을 제공합니다.

popen()을 사용한 코드 예:

// Ensure flushing of output buffers
while (@ ob_end_flush());

// Open the child process for reading
$proc = popen($cmd, 'r');

echo '<pre class="brush:php;toolbar:false">';

// Keep reading and displaying output until EOF
while (!feof($proc)) {
    echo fread($proc, 4096);
    flush();
}

echo '
'; // Close the process pclose($proc);
로그인 후 복사

참고:

  • session_write_close()를 사용하세요. 동시 요청 차단을 피하기 위해 세션이 활성화된 경우 루프 앞에.
  • 헤더 header('X-Accel-Buffering: no')를 설정합니다. Nginxgateway가 존재하는 경우 버퍼링을 비활성화합니다.

위 내용은 PHP의 셸 명령에서 실시간 출력을 얻으려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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