Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何序列化phpseclib?_Php_Serialization_Phpseclib - Fatal编程技术网

如何序列化phpseclib?

如何序列化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 !

自从我从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 !!!";
}
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。