在phpseclib / SSH2中禁用阻止?

时间:2014-07-31 21:27:03

标签: stream blocking phpseclib

我在多台服务器上运行一些命令,我​​希望它们可以同时运行,

foreach($clust['hosts'] as $hostStr) {
    list($host, $port) = Str::rsplit($hostStr,':',2,22);

    $ssh = new \Net_SSH2($host, $port);

    if(!$ssh->login($username,$key)) {
        throw new \Exception("Could not connect to $username@$host:$port");
    }

    $connections[] = $ssh;

}

foreach($connections as $i=>$ssh) {
    $ssh->exec('cd /path/to/my/project && hg up', function($str) {
        echo $str;
    });
    echo "right after ls $i\n";
}

但这总是按顺序运行。我可以告诉Net_SSH2是非阻塞的吗?

1 个答案:

答案 0 :(得分:1)

您可能做的一件事是使用$ssh->setTimeout(1)$ssh->setTimeout(0.5)或其他东西。

你也可能$ssh->write(...),而不是$ssh->read()