PHP-并行任务运行程序
我需要一个PHP中的并行任务运行程序(很可能在windows-IIS7 fastcgi上),它有一个完整的实现。其接口应如下所示:PHP-并行任务运行程序,php,parallel-processing,Php,Parallel Processing,我需要一个PHP中的并行任务运行程序(很可能在windows-IIS7 fastcgi上),它有一个完整的实现。其接口应如下所示: $taskRunner = new ParallelTaskRunner(); $taskRunner->add(function () use ($sharedResource){ //task 1 }); $taskRunner->add(function () use ($sharedResource){ //task 2 });
$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代码的技术——pthreads、pcntl、exec、gearman、curl multi等等
我需要回答的问题有:
- 是否有可能使用这些技术中的任何一种来隐藏此实现?如何做到这一点(如果在实现细节中有一些高级解决方法)?有没有具有此功能的图书馆
- 如何提取有关并行任务运行的信息?例如:
,task1:{a();b();}
,我怎么知道函数的调用顺序是task2:{c();}
a();b();c()代码>或
a();c();b()代码>或
c();a();b()代码>
- 如果出现问题,如何调试任务
$manager = new PromiseManager();
$promise =
new Promise($manager, new CalculateTheMeaningOfLife());
$promise
->then(
new AddTwo($promise))
->then(
new PrintMeaning($promise));
$manager->shutdown();
您必须使用对象而不是闭包(Zend的限制),但它是promises模式,并且是完全异步和受管理的
这是PHP,因此可以与composer一起安装。。。如果你喜欢那种东西
有没有办法在任务之间以某种方式共享变量(一些不可序列化的变量)?您可以看到AddTwo和PrintMeansing类都接受ooriginal promise对象并与它的成员一起工作。更新per@JoeWatkins,pThreads不应用于新项目。使用并行。