如何分叉Perl CGI程序以解决长时间运行的任务?

我正在编写一个由Perl / CGI应用程序控制的Bulk Mail调度程序,并希望学习“好”的方法来分叉CGI程序来运行单独的任务?一个人应该这样做吗?或者更好地承受像 suggested recently那样运行像 GearmanTheSchwartz这样的单独作业队列引擎的开销.当使用像CGI :: Application这样的近MVC框架而不是vanilla CGI.pm时,答案/透视是否会改变?最后一个来自我想到的CGI :: Application Plugin的可能项目 – 这将使“分叉”过程相对简单.

解决方法

看看Proc :: Daemon – 它是最简单的东西.从您的CGI脚本,执行CGI业务(获取输入,返回对浏览器的响应),然后调用Proc :: Daemon :: init()执行fork,守护您的进程并使父进程退出.然后你的脚本(现在是一个守护进程)执行其长时间运行的任务,并在完成后退出. 您希望在作为守护程序运行时更新某些内容(文件,数据库记录),因此后续的CGI调用可以检查它的作用(或它的进展情况).

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...