是否可以在渲染调用后继续执行函数?我使用ajax,在呈现对页面的响应之后能够做一些清理服务器端会很好。当然我可以再打一次ajax,但我不愿意......
任何想法的Tnx。 Bjorsa
答案 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按设定的时间间隔进行处理。
如果你有一个不错的主机,比如Dreamhost,你可以轻松安排cron作业,并会在主持人的文档中找到相应的步骤。
答案 2 :(得分:0)
根据您想要做什么,您应该找到更好的方法。话虽如此,这正是Controller::afterFilter()
callback的用途。