PHP并行/异步SSH连接

时间:2015-07-29 10:39:40

标签: php ssh

我尝试打开多个连接(各种设备)来运行命令并获取输出。 问题是我必须同时运行它们#34; / parallel。 如果我等待一个结果,然后运行另一个结果,它需要太长时间 并且有大量的设备可能会非常糟糕。

我也使用curl,我知道有 <i class="fa fa-windows icon-large">WINDOWS</i> ,我想知道是否有类似于SSH的PHP内容。

我现在正在使用Net_SSH2。

2 个答案:

答案 0 :(得分:1)

您需要使用两个PHP库:https://robo.li/tasks/Remote/#sshhttps://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 threading

的文档

最有趣的功能是使用它(从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());:

祝你好运!