php shell_exec несколько команд одновременно в фоновом режиме - PullRequest
5 голосов
/ 19 июня 2011

У меня есть проблема в php / linux, описанная ниже:

Я должен выполнить команду linux через shell_exec (отключение веб-пространства подписки команды plesk cli).

Проблема заключается в том, когдая делаю это из php, он работает, но перезапускает apache, в результате чего получается пустая страница, а apache перезапускается.

Чтобы избавиться от проблемы, я должен вызвать этот shell_exec в фоновом режиме с задержкой (ожидаемый результат: веб-страница загружается и через 4 секунды запускает скрипт linux.)

Я сделал несколько попыток, таких как:

shell_exec("sleep 4 && /var/www/vhosts/site.com/httpdocs/wrapper2 3  --webspace-off ".$domain_name." &");

, но php будет ждать ответа.

Каким-то образом мне нужно приостановить выполнение команды linux, и все это должно выполняться в bg., И не ждать ответа.

Спасибо

1 Ответ

8 голосов
/ 19 июня 2011

Вы должны попробовать использовать exec вместо shell_exec и перенаправить весь вывод на /dev/null.Примерно так:

exec("(sleep 4 && ... --webspace-off ".$domain_name.") > /dev/null 2>&1 &");

(обратите внимание на () вокруг команд: вам нужно перехватить поток вывода как sleep, так и вашей оболочки.)

Редактировать: и сделать реальный уверен, что вы подтвердите $domain_name.Без проверки и с

$domain_name = "; rm -rf ...";

у вас проблемы ...

...