存储在APC中的php对象删除mySQL链接

存储在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){

我真的不能提供确切的代码,所以我会尽我所能来说明这个问题。首先,我有两个DB连接,它们可以正常连接和工作($local,$remote)。我将这些连接传递到一个名为dbReader的类中,将它们存储在对象中,最后将对象存储在APC中:

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中,我知道这是亵渎神明的,但它可以工作,需要更少的代码,在这个例子中没有缺点。