代码之家  ›  专栏  ›  技术社区  ›  Björn

渲染后继续执行

  •  0
  • Björn  · 技术社区  · 15 年前

    在cakephp中,是否可以在render调用之后继续执行函数?我使用的是Ajax,在将响应呈现到页面之后,能够对服务器端进行一些清理是很好的。当然,我可以再打一个Ajax电话,但我不想……

    TNX的任何想法。 比约萨

    3 回复  |  直到 15 年前
        1
  •  1
  •   brettkelly    15 年前

    来自cakephp文档(emphasis mine):

    render()方法在每个请求的控制器操作结束时自动调用。此方法执行所有视图逻辑(使用set()方法中给定的数据),将视图放置在其布局中,并 向最终用户提供服务 .

    但是, if you look at the source for AppController::render ,它将呈现的输出返回到调用方法。因此,理论上,你可以做如下的事情:

    $this->autoRender = false;
    $outp = $this->render('myView');
    // do cleanup stuff
    echo $outp;
    exit();
    

    只要你有 autoRender 设为假,你应该是好人。我没有亲自尝试过,但似乎它应该像你想要的那样工作。祝你好运!

        2
  •  0
  •   adam    15 年前

    您可以登录到存储批处理作业的文件,然后使用cronjob来执行cakephp的shell(这是可以访问框架的可执行脚本)。因此,当您处理Ajax请求时,请记录批处理过程,然后安排一个crontask按设定的时间间隔进行处理。

    CakePHP book's page on shells

    如果您有一个像样的主机,比如DreamHost,那么您可以轻松地安排cron作业,并在主机的文档中找到相应的步骤。

        3
  •  0
  •   deceze    15 年前

    根据你到底想做什么,你应该找到一个更好的方法。说了这句话,那正是 Controller::afterFilter() callback 是为了。