整个项目的单一连接

时间:2018-01-09 08:04:05

标签: php mysql mysqli

我的项目有一个静态的mysql连接方法,如果线程现在还活着,连接就不会重新生成,但是有一个问题,当我们使用ajax时,每个ajax请求都会得到一个单独的连接,因为ajaxes程序认为不在当前的程序流程之内。 我试图将连接对象保存为会话,即使我序列化了,但是当我再次尝试使用它时我遇到了错误。

这是我的代码:

public static function DBConnect(){

    if(!self::$conn)
    {
        self::$conn = $link = mysqli_connect(_dbHost_,_dbUser_,_dbPass_,_dbName_);
        if (mysqli_connect_errno()) 
        {
            echo 'Could not select database ' ._dbName_ .' '. mysqli_error($link);
            exit;
        }
        mysqli_query($link,"SET NAMES 'utf8'");
        //var_dump(self::$conn);
        return self::$conn; 
    }
    else
        return self::$conn;

}

那么有人想让我只给一个连接整个项目吗?

2 个答案:

答案 0 :(得分:1)

这是不可能的简单方法,因为连接通常在请求结束时关闭,而AJAX请求是单独的请求。

但您可以查看持久连接,这些连接在http://php.net/manual/en/mysqli.persistconns.php进行了解释,并通过在主机名前添加p:来构建。这样可以在多个请求中保持连接打开

答案 1 :(得分:0)

您不需要它。

每个ajax请求都获得一个单独的连接

这就是php的工作方式