php는 exec가 wget+mysql 명령에서 결과를 반환하기 위해 기다리고 있습니다.

StackOverflow https://stackoverflow.com/questions/890083

  •  23-08-2019
  •  | 
  •  

문제

관련된: 여기를 봐

이 명령이 있습니다.

exec("(wget  -O http://domain/file.zip && mysql -u user -ppassword database -e \"UPDATE \\`table\\` SET \\`status\\` = 'live' WHERE \\`id\\` = '1234'\") & echo \$!");

위의 명령은 제대로 작동하지만 PHP는 다음 다운로드로 진행하기 전에 비디오가 다운로드를 완료하기를 기다립니다. 그러나 다음 줄은 다운로드를 백그라운드로 보냅니다. 이는 이전 줄에서 달성하려는 것입니다.

exec("wget -O http://domain/file.zip &>/dev/null & echo \$!");

다운로드를 백그라운드로 보내기 위해 위의 첫 번째 줄을 변경하려면 어떻게해야합니까?

도움이 되었습니까?

해결책

프로세스를 배경으로 사용하고 모든 출력을 리디렉션하도록해야합니다. 따라서 추가해야합니다

> /dev/null 2>&1 & 

당신의 명령의 끝에. 따라서 다음과 같은 것으로 끝나야합니다.

exec("(wget  -O http://domain/file.zip && mysql -u user -ppassword database -e \"UPDATE \\`table\\` SET \\`status\\` = 'live' WHERE \\`id\\` = '1234'\") echo \$! > /dev/null 2>&1 &");

편집하다

더 간단하게 만들려면 WGET와 업데이트를 EXEC로 호출 할 다른 PHP 파일로 이동할 수도 있습니다. 그래서 당신은 끝날 것입니다

exec("php NewFile.php > /dev/null 2>&1 &"); 
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top