nohup: запустить процесс PHP в фоновом режиме

Я пытаюсь запускать процессы 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, но без результата.

Большое спасибо за помощь!

7
задан stoe 13 March 2011 в 09:51
поделиться