1
我需要一個PHP中的並行任務運行器(最有可能在windows - IIS7 fastcgi上),它有一個完整的實現隱藏。它的界面應該是這樣的:PHP - 並行任務運行器
$taskRunner = new ParallelTaskRunner();
$taskRunner->add(function() use ($sharedResource){
//task 1
});
$taskRunner->add(function() use ($sharedResource){
//task 2
});
$taskRunner->run(); //runs task 1, task 2 parallel
我做了一些研究:我所知道的與我可以運行PHP代碼的並行技術 - 並行線程,PCNTL,EXEC,Gearman的,捲曲多,等...
我需要回答的問題:
- 是否有可能使這個實現與任何這些技術在隱瞞什麼?如何做到這一點(如果在實現細節中有一些先進的解決方法)?有沒有圖書館有這個功能?
- 如何提取有關並行任務運行的信息?例如:
task1: { a(); b(); }
,task2: { c(); }
,我怎麼能知道這些函數的調用順序是a(); b(); c();
或a(); c(); b();
或c(); a(); b();
? - 如果出現問題,我該如何調試我的任務?
更新
我查了許多可能的解決方案,我結束了並行線程。使用線程比進程更容易......唯一的缺點是它不支持xdebug。
有沒有以某種方式共享變量之間的(東西非序列化)的方式任務? – inf3rno
您可以看到AddTwo和PrintMeaning類都接受原始承諾對象並使用它的成員。 –