cakephp离线任务

时间:2012-04-27 13:19:04

标签: cakephp-2.0

我有一个从管理面板运行相当密集的工作的网站。 我想以某种方式运行它而不会干扰它产生的输出。

使其更清晰。在提交表单时,我必须解压缩一个大的zip文件,对于我发现的每个图像,我必须将它插入到我的数据库中。这个过程需要3-4分钟。所以我想让作业运行并输出作业正在处理中。 我不知道我是否可以通知用户(可能通过ajax调用),但我不介意。

有可能吗?

感谢

1 个答案:

答案 0 :(得分:0)

这取决于您在处理数据时希望用户执行的操作。

你希望他等吗?然后使用AJAX调用并显示进度条(或任何您喜欢的任何内容),直到任务完成。任务完成后,通知用户(再次通过ajax)并继续执行您已存储的(无论如何)功能。

如果您希望在用户执行其他操作时处理该文件,您可以在后台调用(CakePHP)ShellTask并让它发挥其魔力。如果您希望用户能够查看导入的状态,您可以创建一个导入表,该表存储有关所有导入的信息。通过使用“状态”字段,用户可以知道,例如,任务仍在运行。 当shell任务完成后,您可以更改导入的“状态”并执行任何操作。这需要在任务本身中完成,但这不会是一个问题,因为您可以在Shell任务中使用模型 - 就像use models in Shells一样。

希望这有帮助,如果您需要进一步澄清,请发表评论。