存储在APC中的php对象删除mySQL链接
我真的不能提供确切的代码,所以我会尽我所能来说明这个问题。首先,我有两个DB连接,它们可以正常连接和工作($local,$remote)。我将这些连接传递到一个名为dbReader的类中,将它们存储在对象中,最后将对象存储在APC中:存储在APC中的php对象删除mySQL链接,php,mysql,class,apc,Php,Mysql,Class,Apc,我真的不能提供确切的代码,所以我会尽我所能来说明这个问题。首先,我有两个DB连接,它们可以正常连接和工作($local,$remote)。我将这些连接传递到一个名为dbReader的类中,将它们存储在对象中,最后将对象存储在APC中: class dbReader { public $APC; public $local;//Local DB public $remote;//Remote DB public function __construct($local,$remote){
class dbReader {
public $APC;
public $local;//Local DB
public $remote;//Remote DB
public function __construct($local,$remote){
ePrint($IMX);
$this->APC = new CacheAPC();//APC Object
$this->local = $local;
$this->remote = $remote;
//Store dbreader in APC for reference:
$this->storeDBReader();
}
public function getRunTypes(){
//Query APC:
$array = $this->APC->getData('RunTypes');
//Populate APC:
if(!$array){
$array = array();
$query = ...;
$result = mysql_query($query,$this->remote);
while($row = mysql_fetch_array($result)){
$array[$row['ID']] = $row['Val'];
}
$this->APC->setData('RunTypes',$array);
}
return $array;
}
public function storeDBReader(){
//Store dbReader in APC for reference:
$this->APC->setData('dbReader',$this);
}
}
在从APC恢复dbReader对象并尝试调用getRunTypes()函数之前,连接链接在整个过程中都是良好的。我认为当对象存储在APC中时,mySQL链接就会被破坏。这是真的吗?有什么建议吗?您不能序列化资源,存储在APC中会自动序列化对象
这就是神奇方法和的作用:它们基本上是预序列化和后取消序列化挂钩,当您存储并从apc检索对象时,可以使用它们来取消设置和重置数据库连接。您无法序列化资源,而在apc中存储会自动序列化对象
这就是神奇方法和的作用:它们基本上是预序列化和后非序列化挂钩,当您存储并从apc检索对象时,您可以使用它们来取消设置和重置数据库连接。您不能在apc中存储连接-您需要重新建立链接。一般来说,您需要在之前断开连接您可以序列化并将某些内容放入缓存中,然后在从缓存中取出某些内容并对其进行反序列化时重新连接。感谢您的输入。Erik,如果你想用你的评论来回答,我会接受的。你不能在APC中存储连接-你需要重新建立链接。一般来说,你应该在序列化并将某个东西放入缓存之前断开连接,然后在从缓存中取出某个东西并反序列化它时重新连接。谢谢你的输入。埃里克,如果你想回答你的评论,我会接受的。很高兴知道,我会记住这一点,以备将来应用。现在我只想将连接存储在$GLOBALS中,我知道这是亵渎神明的,但它可以工作,需要更少的代码,并且在这个例子中没有缺点。很高兴知道,我会在将来的应用程序中记住这一点。现在我只想将连接存储在$GLOBALS中,我知道这是亵渎神明的,但它可以工作,需要更少的代码,在这个例子中没有缺点。