关闭浏览器时如何在队列中执行非常繁重的任务(在后台运行)?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关闭浏览器时如何在队列中执行非常繁重的任务(在后台运行)?相关的知识,希望对你有一定的参考价值。

这次我提出了一个问题,希望你能引导我解决。我创建了一个php脚本,允许加载包含大量数据的CSV文件(加载它我使用AJAX请求)。此脚本从文件中提取数据,然后检查此数据是否尚未存储在数据库中,使用另一个脚本获取从文件中提取的每个数据的信息,最后保存已成功通过的数据。 BD表中的所有验证过程。这是一个可以持续几秒钟或几分钟的过程,因为我可以上传的文件包含超过10万个数据,所以我不想让这个过程持续打开浏览器。

我想知道的是当我关闭浏览器时,如何让这个进程在服务器上内部运行。比如将它放入队列并让我在关闭浏览器时继续运行。一旦我重新打开浏览器并打开脚本页面,该页面向我展示了该过程当前的进展情况。我的想法是,当我关闭浏览器时,数据处理不会中断。

你能给我实现这个的任何建议或例子吗?

答案

根据你的描述,我认为你最好自己运行一个专用的守护进程(第三方或自己编写的守护进程)来完成后台工作。

我认为在PHP代码中不这样做的原因是:

  • 如果你从服务器代码中分叉它,你必须安装别的东西,因为它是一个民谣,你要生成的那个进程将从父进程继承一些无用的数据
  • 使用专用守护程序,您可以更轻松地跟踪每个作业的状态,更重要的是,如果您只是为服务器代码中的每个作业分配一个新进程,则不会产生大量进程。

以上是关于关闭浏览器时如何在队列中执行非常繁重的任务(在后台运行)?的主要内容,如果未能解决你的问题,请参考以下文章

在后台Android中进行繁重处理时UI冻结

linux 如何后台运行

在 c# 中用于繁重 IO 操作的线程类型

如何在后台线程中按顺序运行任务[重复]

linux后台任务执行

带有进度通知的长时间运行的后台任务