perl - 如何 fork Perl CGI 程序来分拆长时间运行的任务?

标签 perl cgi fork

我正在编写一个由 Perl/CGI 应用程序控制的批量邮件调度程序,并且想学习 fork CGI 程序以运行单独任务的“好”方法?应该做吗?或者最好承担运行独立作业队列引擎的开销,例如 GearmanTheSchwartz一如既往suggested recently .当使用像 CGI::Application 这样的接近 MVC 的框架而不是 vanilla CGI.pm 时,答案/观点是否会发生变化?最后一个来自我想到的一个 CGI::Application Plugin 的可能项目 - 这将使“ fork ”过程调用起来相对简单。

最佳答案

看看 Proc::Daemon - 这是最简单的工作。从您的 CGI 脚本中,执行 CGI 业务(获取输入,向浏览器返回响应),然后调用 Proc::Daemon::init() 执行 fork 、守护进程并使父进程退出。然后您的脚本(现在是一个守护进程)执行其长时间运行的任务并在完成后退出。
在作为守护进程运行时,您需要更新某些内容(文件、数据库记录),以便后续的 CGI 调用可以检查它做了什么(或它是如何进行的)。

关于perl - 如何 fork Perl CGI 程序来分拆长时间运行的任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/952132/

相关文章:

json - 通过套接字发送表情符号时出现 Perl 问题

javascript - 根据 CGI HTTP_HOST 确定 CSS 文件中的文件路径

php - 如何将查询字符串参数传递给 PHP 二进制文件?

linux - 在 Linux 环境下运行 Perl 脚本

perl - 在 Perl 中,如何测试一个序列的形式是否为 n、n + 1、n + 2、...、n + k?

Perl ImageMagick : how to disable printing of command output?

Perl - 找不到文件

c - C 中的 Shell 程序具有奇怪的 fork 行为

c - 为什么我的子进程没有给我 "correct"结果?

C程序-for循环中的fork命令