【发布时间】:2015-05-25 20:18:15
【问题描述】:
我正在使用 Codeigniter,下面是我用来通过 SSH 从设备获取一些信息的代码。整个过程执行大约需要 2.2 秒,其中 2 秒是登录过程。有什么方法可以至少在一定时间内存储或保持会话活动?
我用于连接的库是phpseclib
$time = microtime(true);
$this->ssh2->Net_SSH2('XX.XX.XX.XX');
if (!$this->ssh2->login('XXXX', 'XXXXXXXX')) {
exit('Login Failed');
}
echo (microtime(true) - $time) . ' elapsed';
$string = $this->ssh2->exec('/usr/www/status.cgi');
【问题讨论】:
-
您真的是指服务器在 2 秒不活动 后断开您的会话吗?或者实际面临什么问题?
-
我想每 15-20 秒执行一些命令,而不必每次都登录来运行该命令。基本上,这将是一项 cron 作业,每 15-20 秒从设备获取统计信息
-
那么问题出在哪里?为什么不把它放在 cron 中呢?
-
我确实在 cron 上有它,但每次运行该功能时我都必须登录。我想避免每 15 秒登录一次。
-
您无法启动/停止 PHP 脚本并使连接保持活动状态。您必须有一个持久的套接字来保持连接打开,而 PHP 的
pfsockopen并不能真正胜任这项任务。我猜你可以让脚本永远运行。每次通话后让它休眠 15 秒。此时可能需要 phpseclib 保持活动状态(即休眠 7 秒,发送保持活动状态并再休眠 7 秒)。
标签: php codeigniter ssh phpseclib