2012-06-28 5 views
5

나는 exec()를 사용하여 linux 또는 windows 명령을 실행합니다.PHP는 명령을 실행하지 않고 로그를 출력합니다.

명령 linux 및 windows를 어떻게 실행하고 기다리지 않고 출력을 기록합니까?

나는 출력 대기하지, 리눅스 알고 : command* > /dev/null 2>/dev/null &

그리고 리눅스의 출력을 로그 : command* > /path/to/log.txt 2>/path/to/error.txt

당신은 어떻게 로깅에 대한 가서 하나의 명령에 배경으로 설정 것인가? 창문도 어떻게 생겼을까요?

+1

출력을 파일로 리디렉션하는 것을 포함하여 exec()를 수행 한 다음 나중에 PHP를 통해 파일을 읽을 수 있습니다. – ametren

+1

마지막에'&'는 백그라운드에 물건을 넣습니다. 그러나 그것은 윈도우에서 작동하지 않습니다. 그것은 리눅스입니다. – hakre

+0

윈도우에서, 나는 단지'start'를 사용한다고 믿는다. – ametren

답변

12

리눅스에 당신이 할 수 있습니다 : Windows에서

exec('command* > /dev/null 2>/dev/null &'); 

당신이 할 수 있습니다

pclose(popen('start /B cmd /C "command* >NUL 2>NUL"', 'r')); 

두 예제

출력 및 오류를 해제, 사람들은 /dev/null (리눅스) 또는 NUL (창)로 이동하는 "아무 곳에도 저장되어 있지 않다"는 의미입니다.

시스템의 유효한 경로로 바꿀 수 있습니다.

Linux의 경우 &은 배경에 배치합니다. 창문에서 이것은 더 복잡하며 프로세스를 호출하려면 start이 필요하고 스트림의 리디렉션을 허용하려면 cmd이 필요합니다.

+0

나는 또한 그것을 기록하고 싶다. – user1105430

+2

출력을 파일로 보내고/ffof 로그 파일을 만들 수있다. –

+0

정확히 내가 생각했던 것 – ametren

관련 문제