2014-03-31 64 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