Как правильно запустить задачу Symfony в фоновом режиме из действия? - PullRequest
0 голосов
/ 21 июня 2011
$path=sfConfig::get('sf_app_module_dir')."/module/actions/MultiTheading.php";
foreach($arr as $id)
{
     if($id)
         passthru ("php -q $path $id $pid &");
}

когда я запускаю скрипт действия последовательно, несмотря на "&".

Пожалуйста, помогите

1 Ответ

1 голос
/ 22 июня 2011

Есть два распространенных способа достичь желаемого.

Оба включают создание таблицы в вашей базе данных (вид списка дел). Ваш интерфейс сохраняет работу, чтобы сделать там.

Первый проще, но это нормально, если вы не возражаете против небольшой задержки. Вы начинаете с создания задачи Symfony. Когда он просыпается (каждые 10/30 / любые минуты), он проверяет эту таблицу, если она имеет какое-либо отношение, просто существует, если нет. В противном случае он делает то, что ему нужно, а затем помечает их как обработанные.

Второй более трудоемкий и более подвержен ошибкам, но может работать мгновенно. Вы создаете задачу, которая демонизирует себя при запуске (разветвляется, снова разветвляется и устанавливает родительский pid на ноль), а затем переходит в режим сна. Если у вас есть работа, вы просыпаетесь, отправляя сигнал. Демонизация и отправка / прием сигнала могут быть выполнены с помощью функций php pcntl_ *.

...