Я пытаюсь выполнить сценарий .php с функцией shell_exec() на общем веб-сервере Linux 1 и 1 (дистрибутив debian GNU / Linux 8).
private function callAsyncSkript(){
// Asynchron Zipping over executing a Script in a new process.
if (substr(php_uname(), 0, 7) == "Windows"){
$cmd = "start /B php .\src\Core\Services\AsynchronZip.php fileids = ".$this->idQuery . " fulllink = ".$this->uri;
pclose(popen($cmd, "r"));
}
else {
$cmd = "/usr/bin/php7.2-cli ".getcwd()."/src/Core/Services/AsynchronZip.php fileids = ".$this->idQuery . " fulllink = ".$this->uri;
shell_exec("/usr/bin/nohup ".$cmd." >/dev/null 2>&1 &"." | at now");
//shell_exec("/usr/bin/nohup ".$cmd." >/dev/null 2>&1 &");
}
}
Добавление "/ usr / bin / nohup" не помогает выполнить асинхронный скрипт, если я использую «| сейчас», скрипт не будет выполнен. Есть ли какие-то особые настройки, которые я должен установить, или есть другие варианты для асинхронного выполнения через командную строку?
Я обнаружил, что единственная доступная мне оболочка - это rssh. Возможно ли, что она ошибка.
Это дистрибутив Debian GNU / Linux 8.
похоже, что команда для запуска чего-либо в фоновом режиме в дистрибутиве Debian находится здесь: debian.org/doc/manuals/user/ch6.html using: $ cmd. 'bg' может это сделать ...
Я попробовал ваше предложение, но безуспешно. Мой вызов сценария выглядит как shell_exec ($ cmd. "Bg"); Я прочитал в присланной вами ссылке bg - это всего лишь синоним &. «()» Тоже не работает («()» предназначен для запуска суб-оболочки).
Скрипт вообще запускается? Я считаю, что в PHP.ini есть настройка конфигурации, которая ограничивает / разрешает доступ к оболочке
да, он работает синхронно.






какая версия Linux у вас установлена? Для ubuntu эта команда должна работать:> / dev / null 2> / dev / null &