问题:我需要克隆/下载几个git存储库,不幸的是它按顺序执行需要很长时间。我有意使用ReactPhp事件循环并且并行执行。
尽管有很多尝试,但我无法让它并行运行。也许我误解了这个概念,但我期望ReactPhp以某种方式分叉执行我的代码。
您可以查看我的代码并分享一些如何使其正常运行的指南吗?
{
"require": {
"react/promise": "2.2.0",
"react/event-loop": "0.4.1",
"cpliakas/git-wrapper": "1.4.1",
"symfony/stopwatch": "2.7.0"
}
}
my composer.json
"suggest": {
"ext-libevent": ">=0.1.0",
"ext-event": "~1.0",
"ext-libev": "*"
},
操作系统:Windows7
PHP:5.4.8和5.5.20
这些enxtensiosn都没有安装
{{1}}
使用StreamSelectLoop
答案 0 :(得分:1)
您正在处理的主要问题是$git->cloneRepository()
来电被阻止; reactphp只允许处理应用程序级循环。如果您不使代码无阻塞,那么您的代码仍将以线性方式运行。你必须要知道如何让克隆在后台发生;这可以通过分叉进程或通过调用另一个PHP脚本在后台运行来完成。我不确定git包装器是这样运行的,但是如果你能找到一个以非阻塞方式执行git调用的库;然后你的问题将主要解决。
ReactPHP不会将php变为非阻塞,它只是提供了允许非阻塞技术的框架。如果您的代码阻塞,则不会运行react循环。