我尝试打开多个连接(各种设备)来运行命令并获取输出。 问题是我必须同时运行它们#34; / parallel。 如果我等待一个结果,然后运行另一个结果,它需要太长时间 并且有大量的设备可能会非常糟糕。
我也使用curl,我知道有 <i class="fa fa-windows icon-large">WINDOWS</i>
,我想知道是否有类似于SSH的PHP内容。
我现在正在使用Net_SSH2。
答案 0 :(得分:1)
您需要使用两个PHP库:https://robo.li/tasks/Remote/#ssh和https://github.com/cheprasov/php-parallel。您的类方法可能类似于以下示例:
function runParallelSSH() {
$parallel = new Parallel(new ApcuStorage());
foreach ($credentials as $user => $host) {
$connection = sprintf('%s@%s', $user, $host);
$connections[] = $connection;
$Parallel->run($connection, function() {
$gitTask = $this->taskGitStack()
->checkout('master')
->pull();
});
}
$results = $parallel->wait($connections);
}
答案 1 :(得分:0)
如果不使用像curl_multi这样的第三方,你必须使用PHP多线程,为此你需要一个扩展pthreads。
的文档最有趣的功能是使用它(从PHP.net修改的代码)
class My extends Thread {
public function run() {
//curl_exec whatever
}
}
$my = new My();
//start as many as you need
$my->start();
//wait for the threads to finnish and join one thread at a time with main-process-thread:
var_dump($my->join());:
祝你好运!