如何在动作的后台正确运行Symfony任务?

时间:2011-06-21 13:54:12

标签: symfony1 symfony-1.4

$path=sfConfig::get('sf_app_module_dir')."/module/actions/MultiTheading.php";
foreach($arr as $id)
{
     if($id)
         passthru ("php -q $path $id $pid &");
}

当我运行动作脚本的时候,尽管是“&”而正在顺序运行。

请帮忙

1 个答案:

答案 0 :(得分:1)

有两种常用方法可以达到你想要的效果。

两者都涉及在数据库中创建一个表(一种待办事项列表)。你的前端可以节省工作量。

第一个更容易,但只有在您不介意轻微延迟的情况下才可以。首先创建一个symfony任务。当它醒来时(每10/30 /几分钟)它会检查该表是否有任何事情可做,如果没有则存在。否则它会执行它需要的操作,然后将它们标记为已处理。

第二个更多的工作,更容易出错,但可以立即工作。您创建一个任务,在启动时守护自身(分叉,再次分叉,并将父pid设置为零),然后进入睡眠状态。如果你有一些工作要做,你可以通过发送信号来唤醒它。可以使用php的pcntl_ *函数完成守护和信号发送/接收。