渲染后继续执行

时间:2009-12-17 19:01:26

标签: ajax cakephp

cakephp中的

是否可以在渲染调用后继续执行函数?我使用ajax,在呈现对页面的响应之后能够做一些清理服务器端会很好。当然我可以再打一次ajax,但我不愿意......

任何想法的Tnx。 Bjorsa

3 个答案:

答案 0 :(得分:1)

来自CakePHP文档(强调我的):

  

在每个请求的控制器操作结束时自动调用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设置为false,就应该很好。我个人没有试过这个,但它似乎应该像你想要的那样工作。祝你好运!

答案 1 :(得分:0)

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

CakePHP book's page on shells

如果你有一个不错的主机,比如Dreamhost,你可以轻松安排cron作业,并会在主持人的文档中找到相应的步骤。

答案 2 :(得分:0)

根据您想要做什么,您应该找到更好的方法。话虽如此,这正是Controller::afterFilter() callback的用途。