我在圈子里跑。我有创建一个巨大文件的网页。这个文件需要永远创建并存在于子程序中。
我的页面运行此子例程但不等待它创建/处理的最佳方法是什么?因为我是从网页上做的,所以apache进程是否有任何问题?
答案 0 :(得分:1)
执行此任务的最简单方法是简单地使用fork()
并在子进程中运行长时间运行的子例程。同时,让父母返回Apache。你已经表明你已经尝试过了,但是没有关于代码究竟是什么样的更多信息以及什么是失败的,很难帮助你在这条道路上前进。
另一个选择是运行一个单独的进程,负责管理长时间运行的任务。让网页使用本地套接字(或通过创建包含必要输入数据的文件)将工作单元发送到长时间运行的进程,然后您的Web脚本可以立即返回,而单独的进程负责完成长时间运行任务。
这种解耦执行的方法相当普遍,通常称为“任务队列”(如果有一些机制可以在请求进入时排队)。有许多工具可以帮助您设计这种解决方案(但对于基于文件系统的通信的简单情况,没有它们可能没问题。)
答案 1 :(得分:0)
我认为你想创建一个Apache的工人孙子 - 即:
Apache -> child -> grandchild
孩子在分叉孙子后死亡,孙子关闭了STDIN,STDOUT和STDERR。 (然后孙子会创建文件。)这些是创建僵尸守护程序的基本步骤(与网络服务器无关的无父工作进程)。