如何序列化phpseclib?
自从我从ajax加载一些php页面以来,我一直在尝试序列化phpseclib连接,我不想一次又一次地重新连接 第1页-首先定义SSH2如何序列化phpseclib?,php,serialization,phpseclib,Php,Serialization,Phpseclib,自从我从ajax加载一些php页面以来,我一直在尝试序列化phpseclib连接,我不想一次又一次地重新连接 第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 !
require("Net/SSH2.php");
session_start();
$ssh = new Net_SSH2 ("localhost");
if ($ssh->login($username, $pass)) {
$_SESSION['obj'] = serialize($ssh);
}else{
echo "Invalid Login !!!";
}
session_start();
require("Net/SSH2.php");
$ssh = unserialize($_SESSION['obj']);
echo $ssh->exec('ls');
第2页-通过取消序列化获取存储会话
session_start();
require("Net/SSH2.php");
$ssh = unserialize($_SESSION['obj']);
echo $ssh->exec('ls');
我想把登录信息也放在$\u SESSION['obj']
中,所以每当我在php页面上时,我只需$ssh=unserialize($\u SESSION['obj'])然后是$ssh->exec('pwd')
是否有解决方法,或者无论何时我在php页面上,我都必须连接/登录到Net/SSH2.php???根据您使用的php版本,您可以尝试为ssh连接声明一个静态变量
如果phpseclib使用pfsockopen,它可能能够重用现有的连接,但这是一个长期问题,可能需要修改库
但一般来说,在PHP中您不能做您想做的事情。脚本完成后,所有打开的套接字都将关闭,因为执行过程将终止。
当然,您不能将其存储在会话变量中-一旦Net_SSH2对象超出范围,它就会被销毁。拥有持久连接的唯一方法是让脚本不断运行,从而保持连接打开。这意味着您有一个脚本具有一个永不结束的while(true){…}
循环,该循环打开一次连接并保持连接。然后,您需要找到一种与此脚本通信的方法,使其执行命令,套接字和类似的技术也可以用于此。静态变量同样无用。很高兴知道-我在某个地方读到它在5.3之后可以工作,但这只是传闻。所以我唯一的办法就是一次又一次地记录。。正确的?如果是,服务器继续记录这么多日志是否会有问题?恐怕是这样,是的。这就是服务器端脚本的问题。不需要太多修改-只需将Net/SSH2.php中唯一的fsockopen调用替换为pfsockopen,就完成了!不知道它是否有效。我认为持久连接在某种程度上依赖于服务器。这是大多数服务器不允许的。。。最终,他们中的大多数人都会关闭它,以避免过时的进程或被锁定在永恒循环中的进程。如果我可以根据自己的需求配置服务器,那么我的最佳选择是什么?我正在制作一个内部网应用程序。。。内部use@django我建议您研究持久脚本和Gearman。