抱歉我的英文......
好的,问题。 我正在使用Parallel :: ForkManager来限制PERL脚本中的fork进程。示例:
$pm = Parallel::ForkManager->new(3);
[...]
while ($new_client = $httpdaemon->accept())
{
$pm->start and next;
# do smth with request in here
$pm->finish;
}
我看到孩子们正在分叉,他们结束了 - 但在这种情况下我无法处理比MAX - 3更多的请求。
第4次请求(在前3之后),脚本不想生成新的孩子(它挂起)
? Parallel :: ForkManager-> new(3) - 这意味着 - MAX 3同时,对吧?
你知道 - 我想同时处理3个远程客户端,并在完成后 - 与其他3个客户端一样。
如果我找不到任何解决方案,我会改用Proc :: Queue ....
答案 0 :(得分:1)
第4次请求(在前3之后),脚本不想生成新的孩子(它挂起)
是的,它会挂起,直到最初的三个完成之一,之后第四个将开始。这正是你想要的。
答案 1 :(得分:0)
感谢您的时间。 我做了一些调试,我找到了解决方案。
问题在于: $ SIG {CHLD} ='IGNORE';
在剧本的前面。 如果这个SIG设置为IGNORE PM,那就吓坏了。
谢谢。