cakephp / php在后台运行功能

时间:2013-11-25 20:23:47

标签: php cakephp exec background-process pcntl

我以前从未这样做过,所以我需要一些输入。

代码(一般):     

$cofig = Configure::read('config');
    if ($config['stuff'] == 1){
      $this->Session->setFlash('it is already done this month');
      $this->redirect('/to/some/where');
    }
    elseif ($config['stuff'] == 2){
      $this->Session->setFlash('it is already running');
      $this->redirect('/to/some/where');
    }
    else {
      SomeComponent::SomeFunction(); //this I need to launch in background while user continues further
      $this->Session->setFlash('you have launched it');
      $this->redirect('/to/some/where');
    }

“SomeComponent”包含多个功能。我需要在bacground中启动特定功能“SomeFunction()”,同时用户继续进行 函数“SomeComponent :: SomeFunction()”生成一堆pdfs,与数据库交互并使用Cakephp特定的方法'n'crap来完成所有这些。用户通过数据库接收输出,因此我不需要从函数本身检索它 所以我不清楚哪种方法可以做到这一点,最好使用哪种方法,以及每种方法的缺点(特别是安全问题)。

我希望我以一种可以理解的方式解释一切。如果你已经读过这篇文章了 - 谢谢。

1 个答案:

答案 0 :(得分:0)

是那个过程" SomeComponent :: SomeFunction()"花费太长时间?如果答案是肯定的,那么我会将该函数包装在a shell中,如果你想将它带到下一个级别,我会使用Observer来发送该后台进程。

Here is介绍CakePHP中的事件处理。