この質問は非常に古く、受け入れられる回答は正しいです。しかし、私はちょうどこれを働かせて、それを必要とする人のためにそれを達成する方法についてもう少し詳しく述べたいと思った。
次のコードは、非常に大きな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
を追加し、コードをミラー化してプログラムのパスと名前を変更することを忘れないでください。
上記のURLは無効です。 – Rahul