У меня проблема с запуском непрерывного фонового процесса, в котором родительский процесс инициирует 2 или 3 дочерних процесса, а затем завершается сам, дочерние процессы имеют тяжелые вычисления, поэтому они занимают много времени.
Я использую команду exec для запуска процесса, но не знаю, что он не запускается и не генерирует никаких ошибок (отчеты об ошибках включены, E_ALL и display_errors)
Вот как я пытаюсь это сделать
error_reporting(E_ALL);
ini_set('display_errors',1);
$output = '';
$dir = dirname(__FILE__).'/';
//$cmd = "nohup php {$dir}/background-service.php > /dev/null & echo $!";
$cmd = "nohup php background-service.php >/dev/null 2>&1 &";
exec($cmd );
фон-service.php
<?php
ini_set('max_execution_time', 0);
ini_set('display_errors',1);
file_put_contents('a'.time().'.txt',"this is the test code");
?>
когда я нажимаю на файл напрямую, он генерирует файл, но не с exec, я проверял, что exec включен (сервер ubuntu)
if ( $safe_mode = ini_get( 'safe_mode' ) && strtolower( $safe_mode ) != 'off' )
{
echo 'Safe Mode is Disabled';
}
else
echo 'Safe Mode is Enabled<br/>';
if ( in_array( 'exec', array_map( 'trim', explode( ',', ini_get( 'disable_functions' ) ) ) ) )
{
echo 'exec is Disabled';
}
else
echo 'exec is Enabled<br/>';
Кто-нибудь, пожалуйста, скажите мне, где я ошибаюсь, как я могу определить, отключен ли он сервером
Спасибо