2014-03-31 63 views
1

我需要编写一个执行以下操作的“命令执行”:与IPC Perl的命令执行::运行

  1. 汇聚了来自数据库命令。
  2. 产生$ LIMIT命令的数量(将异步运行)。
  3. 当1个命令完成另一个可以启动(只要命令$ LIMIT没有达到)。
  4. 该命令不应该由父级的子级生成(我不想运行子进程+命令进程)。
  5. 将结果记录到数据库&日志文件(退出状态,stdout & stderr)。
  6. 用Perl(或PHP)编写。

我测试过IPC::Run。我只能使它以块(X一次)运行命令。我不得不等待那些X完成,然后运行另一个块。我可能做错了一些事情 - 参考页面很难遵循。这会做我需要的吗?

我也发现以下看起来很有前途的(How to write parallel programs in Perl?)。这会做我需要的吗?

回答

1

条件2和3被称为节流,这个功能是由模块提供的,如Parallel::ForkManagerForks::Super(我是Forks :: Super的作者)。

+0

谢谢,我会检查出来。 –

+0

我忘记了部分要求是我们不会派生一个会运行命令的子进程(实质上运行两个进程来执行一个任务)。它应该只是一个产生命令的父母 - 没有中间的“孩子”。那有意义吗? –

+0

因为你想捕获STDOUT和STDERR,所以如果你不想要额外的任务,你将不得不使用IO :: Select循环。这意味着你需要做你自己的流程管理,但这很简单。 – ikegami