Я пытаюсь запускать процессы php в фоновом режиме и запускать их из файла php.
Некоторая информация: PHP версии 5.2.17, php safe_mode выключен, система linux. Я начинаю процесс с exec, пробовал уже shell_exec. Я установил для всех файлов значения 0755, 0777.
$pid = exec("nohup $cmd > /dev/null 2> /dev/null & echo $!");
Если я напечатаю этот оператор, я получу это, и pid в порядке:
nohup /usr/local/bin/php5 /.../../file.php > /dev/null 2> /dev/null & echo $!
Если я ищу процессы под ssh с
top
, я вижу свой процесс php5 с правильным pid . пользователь root
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
3533 xxxxxxxx 20 0 21356 8868 4580 S 0 0.4 0:00.13 php5
3536 xxxxxxxx 20 0 20836 8260 4428 S 0 0.4 0:00.09 php5
3539 xxxxxxxx 20 0 20836 8260 4428 S 0 0.4 0:00.09 php5
3542 xxxxxxxx 20 0 20836 8260 4428 S 0 0.4 0:00.09 php5
3545 xxxxxxxx 20 0 20836 8260 4428 S 0 0.4 0:00.09 php5
3548 xxxxxxxx 20 0 20836 8260 4428 S 0 0.4 0:00.09 php5
3551 xxxxxxxx 20 0 20836 8260 4428 S 0 0.4 0:00.09 php5
, если я запускаю процесс, руководство вверху выглядит так:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
8141 xxxxxxxx 22 2 24048 9.9m 5344 S 10 0.5 0:00.31 php5
Проблема: похоже, ничего не происходит. Чтобы немного отладить, я написал вывод в файл
ob_start();
echo "STARTING...";
writeLog(ob_get_contents());
//...
function writeLog($info){
$handle = fopen("file.log", "a+");
fwrite($handle, $info);
fclose($handle);
}
exit;
В моем файле нет журналов. Если я запускаю этот файл в своем браузере, он обрабатывается правильно и получает мой файл file.log с «отладочной» информацией.
Почему это работает в браузере, а не в команде exec / shell_exec ??! У меня есть именно эти процессы php с правильным pid, но без результата.
Большое спасибо за помощь!