我一直在尝试序列化phpseclib连接,因为我从ajax加载一些php页面,我不想一次又一次地重新连接。
第1页 - 首先定义SSH2
require("Net/SSH2.php");
session_start();
$ssh = new Net_SSH2 ("localhost");
if ($ssh->login($username, $pass)) {
$_SESSION['obj'] = serialize($ssh);
}else{
echo "Invalid Login !!!";
}
第2页 - 使用反序列化获取存储会话
session_start();
require("Net/SSH2.php");
$ssh = unserialize($_SESSION['obj']);
echo $ssh->exec('ls');
我想将登录信息放在$_SESSION['obj']
中,所以每当我在那个php页面上时我只是$ssh = unserialize($_SESSION['obj']);
然后$ssh->exec('pwd')
..
当我在PHP页面上时,是否有工作或者我必须始终连接/登录到Net / SSH2.php ???
答案 0 :(得分:2)
根据您拥有的PHP版本,您可以尝试为ssh连接声明一个静态变量。
如果phpseclib使用pfsockopen,它可能能够重用现有的连接 - 但这是一个很长的问题,可能需要修改库。
但总的来说,你不能在PHP中做你想做的事。当脚本完成时,所有打开的套接字都会关闭,因为执行过程会终止。 你当然不能将它存储在会话变量中 - 只要Net_SSH2对象超出范围就会被销毁。
答案 1 :(得分:0)