对于我的项目,我有一个静态的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条答案
按热度按时间ddhy6vgd1#
这不是简单的方法,因为当请求结束时连接通常是关闭的,ajax请求是独立的请求。
但是您可以看看持久连接,这在http://php.net/manual/en/mysqli.persistconns.php 通过在主机名前面加上
p:
. 这会使连接在多个请求上保持打开状态ecfsfe2w2#
你不需要它。
每个ajax请求都获得一个单独的连接
这就是php的工作原理