>백엔드 개발 >PHP 튜토리얼 >PHP 셸 명령 실행에서 실시간 업데이트를 어떻게 받을 수 있나요?

PHP 셸 명령 실행에서 실시간 업데이트를 어떻게 받을 수 있나요?

DDD
DDD원래의
2024-12-01 04:36:16826검색

How Can I Get Live Updates from PHP Shell Command Execution?

라이브 업데이트를 통한 PHP 셸 출력

PHP는 shell_exec, exec, system 및 passthru를 포함하여 셸 명령을 실행하기 위한 여러 기능을 제공합니다. 그러나 이러한 함수는 일반적으로 명령이 완료될 때까지 기다렸다가 결과를 표시합니다. 실행 중에 명령의 실시간 출력을 보려면 다음 대안을 고려하십시오.

옵션 1: 병렬 실행을 위해 popen() 사용

popen() 함수 PHP 스크립트와 쉘 명령을 실행하는 별도의 프로세스 사이의 파이프를 엽니다. 이를 통해 스크립트는 프로세스와 상호 작용하여 실시간으로 출력을 읽을 수 있습니다.

<?php
$cmd = 'ping -c 10 127.0.0.1';
$proc = popen($cmd, 'r');

echo '<pre class="brush:php;toolbar:false">';
while (!feof($proc)) {
    echo fread($proc, 4096);
    flush();
}
echo '
'; ?>

이 코드는 ping 명령을 실행하고 출력이 사용 가능해지면 출력을 표시합니다.

옵션 2: 실시간 출력을 위해 passthru() 사용

passthru() 함수는 명령의 출력을 직접 사용자 브라우저를 사용하면 실시간 업데이트를 건너뛰고 결과가 나올 때마다 표시할 수 있습니다.

<?php
echo '<pre class="brush:php;toolbar:false">';
passthru($cmd);
echo '
'; ?>

최적화 팁:

  • 호출을 통해 세션 버퍼링을 비활성화합니다. session_write_close()를 사용하여 병렬 실행을 방해하지 않도록 합니다.
  • 헤더를 설정합니다. nginx가 실시간 출력을 방해하지 않도록 서버가 nginx 게이트웨이 뒤에 있는 경우 "X-Accel-Buffering: no".

이러한 기술을 사용하면 다음에서 셸 명령 출력의 실시간 업데이트를 활성화할 수 있습니다. PHP 스크립트를 사용하여 사용자 경험을 향상하고 명령 실행에 대한 실시간 통찰력을 제공합니다.

위 내용은 PHP 셸 명령 실행에서 실시간 업데이트를 어떻게 받을 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.