1

我在兜圈子。我有创建一个巨大文件的网页。该文件需要永远创建并位于子例程中。

我的页面运行此子例程但不等待它被创建/处理的最佳方式是什么?自从我从网页上执行此操作后,apache 进程是否存在任何问题?

4

2 回答 2

1

执行此任务的最简单方法是简单地使用fork()并让长时间运行的子例程在子进程中运行。同时,让父级返回 Apache。您表示您已经尝试过,但是缺少有关代码的确切外观和失败原因的更多信息,很难帮助您在这条道路上前进。

另一种选择是运行一个单独的进程来负责管理长时间运行的任务。让网页使用本地套接字(或通过创建包含必要输入数据的文件)将工作单元发送到长时间运行的进程,然后您的 Web 脚本可以立即返回,而单独的进程负责完成长时间运行任务。

这种解耦执行的方法相当普遍,通常被称为“任务队列”(如果有一些机制可以在请求进入时对它们进行排队)。有许多工具可以帮助您设计这种解决方案(但对于基于文件系统的通信的简单情况,没有它们可能会很好)。

于 2013-01-25T18:49:35.197 回答
0

我认为您想创建一个 Apache 的工人孙子——即:

Apache -> child -> grandchild

孩子在分叉孙子后立即死亡,孙子关闭 STDIN、STDOUT 和 STDERR。(然后孙子创建文件。)这些是创建僵尸守护程序(与网络服务器未连接的无父工作进程)的基本步骤。

于 2013-01-25T21:13:27.257 回答