如何在不等待ssh2的情况下强制加载PHP



目前我有一个脚本,它使用SSH2在服务器上执行c程序,但网页加载需要x秒,脚本等待。有没有办法让php通过ssh发送命令而不等待响应?谢谢我当前的代码:

<?php
$ssh = ssh2_connect('********', 22);
ssh2_auth_password($ssh, 'root', '**********');
$stream = ssh2_exec($ssh, './sr1 80 4 400 400 20');
fclose($stream);
?>

(由于明显的原因,服务器IP和密码被删除)

使用http://phpseclib.sourceforge.net/。。。

<?php
include('Net/SSH2.php');
$ssh = new Net_SSH2('********', 22);
$ssh->login('root', '**********');
$ssh->enablePTY();
$ssh->exec('nohup ./sr1 80 4 400 400 20 &');

你可以在有和没有nohup和&但我猜想它们是必要的。

您可以在线程中运行代码,以便异步运行:

<?php
class MySsh extends Thread {
    public function run() {
        $ssh = ssh2_connect('********', 22);
        ssh2_auth_password($ssh, 'root', '**********');
        $stream = ssh2_exec($ssh, './sr1 80 4 400 400 20');
        fclose($stream);
    }
}
$mySsh = new MySsh();
var_dump($mySsh->start());
?>

注意,要在php中使用Threads,需要安装pthreads库。

ssh2_connect,ssh2_auth_password是ssh登录所必需的。

ssh2_exec在给定第二个参数"的情况下执行命令/sr1'。你能提供它对片段的确切作用吗?

其次,ssh2_exec:在远程服务器上执行命令。我认为它将等待您的命令完成执行,然后返回。

你可以尝试使用ssh2_shell吗:请求一个交互式shell

您可能可以打开shell并调用您的命令来运行后台或不同的进程,然后退出shell。我认为它可以比ssh2_exec更快。

它对我有效:

$connection = ssh2_connect('host', 22);
ssh2_exec($connection, "screen -dmS 'sr-script' ./sr1 80 4 400 400 20 2>&1");

相关内容

  • 没有找到相关文章

最新更新