目前我有一个脚本使用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和密码,原因很明显)
答案 0 :(得分:1)
使用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和&amp;但我猜他们是必要的。
答案 1 :(得分:0)
您可以在Thread中运行代码,以便异步运行:
<?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中使用Thread
,您需要安装pthreads库。
答案 2 :(得分:0)
ssh2_connect,ssh2_auth_password是ssh登录所必需的。
ssh2_exec执行第二个参数&#39; ./ sr1&#39;的命令。您能否详细说明它与片段有什么关系?
其次,ssh2_exec:在远程服务器上执行命令。我认为它将等待你的命令完成执行然后返回。
您可以尝试使用ssh2_shell:请求交互式shell
您可以打开shell并调用命令来运行后台或在不同的进程中退出shell。我认为它可以比ssh2_exec更快。