我有一个从管理面板运行非常密集的工作的站点。我想以某种方式运行它而不干扰它产生的输出。
为了更清楚。在提交表单时,我必须解压缩一个大的 zip 文件,并且对于我找到的每张图片,我都必须将其插入到我的数据库中。此过程需要 3-4 分钟以上。所以我想让作业运行并输出正在处理的作业。我不知道我是否可以通知用户(可能通过 ajax 调用),但我不介意。
可能吗?
谢谢
我有一个从管理面板运行非常密集的工作的站点。我想以某种方式运行它而不干扰它产生的输出。
为了更清楚。在提交表单时,我必须解压缩一个大的 zip 文件,并且对于我找到的每张图片,我都必须将其插入到我的数据库中。此过程需要 3-4 分钟以上。所以我想让作业运行并输出正在处理的作业。我不知道我是否可以通知用户(可能通过 ajax 调用),但我不介意。
可能吗?
谢谢
这取决于您在处理数据时希望用户做什么。
你想让他等吗?然后使用 AJAX 调用并显示进度条(或任何您喜欢的),直到任务完成。任务完成后,通知用户(再次通过 ajax)并继续使用您存储的(任何)功能。
如果您希望在用户执行其他操作时处理文件,您可以在后台调用 (CakePHP) ShellTask 并让它发挥作用。如果您希望用户能够查看导入的状态,您可以创建一个导入表,该表存储有关所有导入的信息。通过使用“状态”字段,用户可以知道,例如任务仍在运行。当 shell 任务完成时,您可以更改导入的“状态”并执行任何操作。这需要在任务本身中完成,但这不是问题,因为您可以在 Shell Tasks 中使用模型 - 与在 Shells中使用模型的方式相同。
希望这会有所帮助,如果您需要任何进一步的说明,请发表评论。