我在myProject / lib / task下放置了一个cron任务。这个cron每天工作超过一年。
但是现在我必须在我的项目中创建一个按钮,以便在客户需要时执行与cron相同的过程。代码太复杂了,我无法在正常操作中重写所有内容。
有没有办法从正常的操作中调用cron任务?
答案 0 :(得分:3)
以下是如何通过操作调用任务,您只需要添加一个链接就可以了。我在示例中使用了标准的Symfony“Clear Cache”任务,但您可以将其更改为您的:
public function executeRunTaskTest(sfWebRequest $request)
{
// need to be working in the project root
chdir(sfConfig::get('sf_root_dir'));
// init the task we want to run
$task = new sfCacheClearTask($this->dispatcher, new sfFormatter());
// run the task
$task->run(
array(), // array of arguments
array(
'app' => 'frontend',
'env' => 'prod',
'type' => 'all',
) // array of options
);
// back to where we came from
$this->redirect($request->getReferer());
}
您也可以使用PHP exec()
或shell_exec()
函数,但这个Symfony解决方案可能更容易。 :)