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 и обновление в другой файл php, который вы вызовете с помощью exec.Таким образом, у вас останется только

exec("php NewFile.php > /dev/null 2>&1 &"); 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top