shell_exec - регистрация и вывод - PullRequest
1 голос
/ 06 июля 2011

Я запускаю несколько shell_exec, process.php в фоновом режиме

На shell/ssh я выполняю код следующим образом: username [~/public_html/curl]# php index.php

Пример....

index.php

<?php
 shell_exec("php process.php > /dev/null 2>&1 &");
 shell_exec("php process.php > /dev/null 2>&1 &");
 shell_exec("php process.php > /dev/null 2>&1 &");
 shell_exec("php process.php > /dev/null 2>&1 &");
?>

process.php

<?php
$section = rand(999,999999);
$z = 1;
print "STARTED .... \n";
while($z <= 10) {
 print "---------------------------------\n";
 print $section . ": " . $z . "\n";
 $z++;
 sleep(2);
}
print "LOOP FINISH at " . time();
?>

при process.php 's работает, у меня две проблемы с этим:

  1. Я не вижу вывод от process.php (мне нужно знать, что они делают)
  2. Iнужно знать, какой процесс завершен, а какой запущен.

Каков наилучший способ записи результатов в реальном времени?сохранение в текстовый файл?или как это можно сделать с базой данных MySQL (таблица журналов)?

1 Ответ

1 голос
/ 06 июля 2011

Если ваши процессы будут живы только во время жизни другого php-скрипта, вы можете использовать popen вместо shell_exec:

http://us.php.net/popen

Это дает вам очень удобный способ переноса данных из других процессов в ваш php-скрипт, используя тот же интерфейс, что и для работы с файлами. Чтобы узнать, что процесс завершен, вы можете убедиться, что процесс отправит EOF (конец файла), когда это будет сделано, и использовать функцию feof php для его обнаружения.

С другой стороны, если ваши процессы могут жить дольше, чем любые другие php-скрипты, которые общаются с ним, тогда текстовый файл может быть очень практичным решением. Имейте в виду, однако, что доступ к диску всегда намного медленнее, чем доступ к памяти, поэтому, если вы используете текстовые файлы для связи, он не будет оптимально быстрым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...