2011-08-28 5 views
5

나는 CentOS에서 아파치에서 php를 사용하고있다. 사용자에게 서비스를 제공해야하며, 큰 파일을 클릭하여 삭제할 수 있습니다. shell_exec를 사용하려고합니다. 하지만 백그라운드에서 실행되지 않습니다. 실행되어 사용자를 기다립니다.shell_exec가 백그라운드에서 실행되지 않습니다. 다른 해결책이 있습니까?

내 명령을

$ D_command = "RF RM은 비디오/'$ Mdelete'";

shell_exec ($ D_command);

감사합니다!

답변

4

엉덩이 & 명령 끝에.

$D_command="nohup rm -rf videos/'$Mdelete' > /log/deletedfile.log 2>&1 &"; 
+0

처음에 원하는 경우 nohup을 추가 할 수 있습니다. "nohup rm -rf videos/'$ Mdelete'&" –

+0

nohup을 추가해야합니다. 그렇지 않으면 프로세스가 apache로 생성되고 스레드되지 않습니다. –

+0

시도해보십시오. 여전히 사용자 대기를 만듭니다 ... – user692601

0

exec를 사용

rm -rf videos/'$Mdelete' & 

을 실행 해보십시오. 앰퍼샌드

+0

nohup을 명령 시작 부분에 추가해야합니다. 이것은 PHP 인터프리터가 백그라운드에서 프로세스를 실행하도록 지시합니다. 명령 출력을 반환하는 대신 프로세스 ID –

+0

을 시도합니다. 여전히 사용자 대기를합니다 ... – user692601

+0

@ user692601'exec' 또는'shell_exec'을 사용해 보았습니까? –

0

이 시도 배경에 실행을 나타냅니다

popen($D_command, 'r') 
0

을 내가 아는이 꽤 오래된 질문이지만, 나는 동일한 문제가 있고, 이것은이었다 시도하고 실패한 작업 솔루션은 , process_open :

$process = popen("nohup $D_command > /dev/null 2> /dev/null & echo $!", 'r'); 
$pid = fread($process, 32); 
관련 문제