Есть PHP 7.2 (CGI), для примера добавляем 2 простых скрипта:
sleep.php:
<?php
sleep(30);
background.php:
<?php
exec("su -s /bin/sh - user -c cd /var/www/user/data/www/example.com/ && /opt/php72/bin/php -q /var/www/user/data/www/example.com/sleep.php > /dev/null 2>&1 &");
Консоль:
cd /var/www/user/data/www/example.com/ && /opt/php72/bin/php -q /var/www/user/data/www/example.com/background.php
В файле background.php мы запускаем команду в фоновом режиме, но скрипт зависает на 30 секунд, почему так происходит?
В документации сказано:
Замечание:
Если вы собираетесь использовать эту функцию в программе, работающей в качестве демона, убедитесь, что стандартный вывод функции направлен в файл или другой поток, в противном случае PHP зависнет вплоть до конца выполнения программы.
Проблема с окружением? Как это настраивается? Что я делаю не так?