首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >phpseclib挂起webserver,直到所有命令运行完毕。

phpseclib挂起webserver,直到所有命令运行完毕。
EN

Stack Overflow用户
提问于 2014-10-25 01:03:14
回答 2查看 548关注 0票数 2

我试图向Debian服务器发送一些命令,这些命令需要30秒才能完成,这很好,但是每当我的ran服务器上有人单击按钮(告诉php使用phpseclib运行命令),整个网站就会冻结(如果您尝试访问它,它只会继续加载和加载),直到所有命令运行完毕或超时为止。

代码

代码语言:javascript
运行
复制
    $this->_ssh = new Net_SSH2($this->_ip);

    if(!$this->_ssh->login($this->_username, $this->_password))
        die('Could not connect with SSH: Login failed!');


        $cd_to_subdir_command = 'cd ' . $this->_path . "\n";
        $rmdir_command = '[ -d ' . $this->_screen . ' ] || rm -rf ' . $this->_screen;
        $mkdir_command = 'mkdir ' . $this->_screen;
        $extract_command = 'tar -xzf hlds_no_amxx.tar.gz -C ' . $this->_screen . "\n";
        $chmod_command = 'chmod -R 777 ' . $this->_screen . "\n";


        $this->_ssh->read(':~$');
        $this->_ssh->write($cd_to_subdir_command . "\n");
        $this->_ssh->write($rmdir_command . "\n");
        $this->_ssh->write($mkdir_command . "\n");
        $this->_ssh->write($extract_command . "\n");
        $this->_ssh->write($chmod_command . "\n");
        $this->_ssh->setTimeout(30); // 30 seconds timeout to give it time to extract because the file is really big

        $this->_ssh->read();

我需要need服务器不要这样做,因为很明显,30秒的加载时间是痛苦的,更不用说只有一个用户一次可以做一些事情。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-10-25 01:24:17

如果您不需要立即得到结果,我会将代码放在外部脚本/php文件中,然后只运行

代码语言:javascript
运行
复制
$this->ssh->exec('nohup php /full/path/file.php');

您可以在结束时删除超时,并让文件执行它必须做的任何事情。不把它放在背景里。

票数 3
EN

Stack Overflow用户

发布于 2014-10-25 03:48:04

我看错方向了。这里的问题不是在发送SSH命令时服务器挂起或诸如此类的问题。

我使用ajax调用包含SSH代码的函数。在这种情况下,SSH代码是不相关的。won服务器只能处理来自客户端的一个ajax请求,因此在ajax请求返回成功或错误之前,客户端将无法使用该网站。

这不是一个需要解决的问题。它的ajax是罪魁祸首,而不是ssh或debian服务器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26558332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档