这个问题很老了,接受的答案是正确的。然而,我刚刚得到了这个工作,并且想知道如何为需要它的人完成它。
以下代码存在于非常大的perl CGI脚本中。这个特定的子程序在多个票务系统中创建票证,然后使用返回的票号通过Twilio服务进行自动呼叫。该通话需要一段时间,我不希望CGI用户必须等待通话结束才能看到来自其请求的输出。为此,我做了以下内容:
(All the CGI code that is standard stuff. Calls the subroutine needed, and then)
my $randnum = int(rand(100000));
my $callcmd = STL_DIR . "/aoff-caller.pl --uniqueid $uuid --region $region --ticketid $ticketid";
my $daemon = Proc::Daemon->new(
work_dir => STL_DIR,
child_STDOUT => TMP_DIR . '/stdout.txt',
child_STDERR => TMP_DIR . '/stderr.txt',
pid_file => TMP_DIR . '/' . $randnum . '-pid.txt',
exec_command => $callcmd,
);
my $pid = $daemon->Init();
exit 0;
(kill CGI at the appropriate place)
我确信,产生并连接到PID随机数是矫枉过正,但我在创建是非常容易避免的问题没有兴趣。希望这可以帮助那些希望做同样事情的人。请记住在脚本的顶部添加use Proc::Daemon
,镜像代码并更改为程序的路径和名称,您应该很好。
上述网址无效。 – Rahul 2015-12-15 17:48:00