Имам проблем с изпълнението на непрекъснат фонов процес, в който родителят инициира 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 );
фонова услуга.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/>';
Моля, някой да ми каже къде греша в него, как мога да открия дали е деактивиран от сървъра
Благодаря