我的项目有一个静态的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;
}
那么有人想让我只给一个连接整个项目吗?
答案 0 :(得分:1)
这是不可能的简单方法,因为连接通常在请求结束时关闭,而AJAX请求是单独的请求。
但您可以查看持久连接,这些连接在http://php.net/manual/en/mysqli.persistconns.php进行了解释,并通过在主机名前添加p:
来构建。这样可以在多个请求中保持连接打开
答案 1 :(得分:0)
您不需要它。
每个ajax请求都获得一个单独的连接
这就是php的工作方式