쉘 스크립트는 PHP 코드에서 실행되어야 하며 이 표준 출력(stdout) 및 오류 출력(stderr) 각각. 쉘의 리디렉션 을 사용하여 표준 출력 및 오류 출력을 파일에 넣은 다음 PHP를 사용하여 파일을 읽는 것이 가능하지만 출력 파일의 내용은 다시 전송된 후에는 더 이상 필요하지 않습니다. php.shell의 Redirect 출력을 변수에 넣을 수 있는 방법이 있습니까?
스크립트의 기능을 실행하려면 PHP 자체로는 완료할 수 없으며(R 언어로 스크립트 실행) 일반 출력과 오류 출력을 모두 피드백해야 합니다.2. 이미 시도했습니다
리디렉션은 표준 출력과 오류 출력을 각각 파일에 넣을 수 있지만 임시 파일을 생성합니다.
<code class="bash">my_cmd 1>out.txt 2>err.txt</code>
및 out.txt
파일 내용을 읽고 반환합니다. err.txt
을 실행하는 데 오랜 시간이 걸리는 경우(아마도 몇 분), 동일한 사용자가 짧은 시간 내에 여러 http 요청을 시작하여 PHP가 my_cmd
를 실행하게 하면 my_cmd
및 out.txt
은 쓰기 충돌을 피하기 위해 매번 다릅니다. 이로 인해 err.txt
불필요한 중간 파일이 많이 생성됩니다. 제때에 삭제되더라도 여전히 I/O 오버헤드가 발생하므로 이를 방지할 수 있기를 바랍니다.
기능: exec()
<code>string exec ( string $command [, array &$output [, int &$return_var ]] )</code>
의 매개 변수는 "스크립트 실행 시 화면 출력"의 내용만 가져오는 것 같습니다. 이는 stdout 또는 stdout과 stderr의 혼합이며 별도로 얻을 수 없습니다. $output