>  기사  >  백엔드 개발  >  PHP는 쉘 스크립트를 실행하고 표준 출력과 오류 출력을 얻습니다.

PHP는 쉘 스크립트를 실행하고 표준 출력과 오류 출력을 얻습니다.

WBOY
WBOY원래의
2016-09-08 08:29:361565검색

1. 질문

쉘 스크립트는 PHP 코드에서 실행되어야 하며 표준 출력(stdout)오류 출력(stderr) 각각. 쉘의 리디렉션 을 사용하여 표준 출력 및 오류 출력을 파일에 넣은 다음 PHP를 사용하여 파일을 읽는 것이 가능하지만 출력 파일의 내용은 다시 전송된 후에는 더 이상 필요하지 않습니다. php.shell의 Redirect 출력을 변수에 넣을 수 있는 방법이 있습니까?

스크립트의 기능을 실행하려면 PHP 자체로는 완료할 수 없으며(R 언어로 스크립트 실행) 일반 출력과 오류 출력을 모두 피드백해야 합니다.

2. 이미 시도했습니다

쉘의

리디렉션은 표준 출력과 오류 출력을 각각 파일에 넣을 수 있지만 임시 파일을 생성합니다.

<code class="bash">my_cmd 1>out.txt 2>err.txt</code>
php는

out.txt 파일 내용을 읽고 반환합니다. err.txt

단점: 중간 파일이 생성됩니다. 쉘 명령

을 실행하는 데 오랜 시간이 걸리는 경우(아마도 몇 분), 동일한 사용자가 짧은 시간 내에 여러 http 요청을 시작하여 PHP가 my_cmd를 실행하게 하면 my_cmdout.txt은 쓰기 충돌을 피하기 위해 매번 다릅니다. 이로 인해 err.txt불필요한 중간 파일이 많이 생성됩니다. 제때에 삭제되더라도 여전히 I/O 오버헤드가 발생하므로 이를 방지할 수 있기를 바랍니다.

php의

기능: exec()

<code>string exec ( string $command [, array &$output [, int &$return_var ]] )</code>

의 매개 변수는 "스크립트 실행 시 화면 출력"의 내용만 가져오는 것 같습니다. 이는 stdout 또는 stdout과 stderr의 혼합이며 별도로 얻을 수 없습니다. $output

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