分享mysqli连接

时间:2013-08-28 09:09:03

标签: php mysql mysqli

我最近在PHP项目中从ext / mysql切换到mysqli。在该项目中,我通过将new_link参数设置为false来广泛使用mysql_connect的连接重用功能。

据我所知,mysqli_connect中没有这样的机制;即使使用相同的主机和用户,它也将始终返回新连接。它是否正确?是否有其他功能可以模仿重用行为?

注意:我看到主机前置p:会创建持久连接。但是,在我的情况下不能使用它,因为我的项目的一部分依赖于临时表。

更新
实际的mysqli对象嵌入在DB处理程序类中,该类管理对数据库的访问。此处理程序始终用于与DB交互。

我过度简化了我的问题,因为我只想专注于这个问题,如果mysqli可以通过多次调用具有相同参数的mysqli_connect来自动重用单个连接。我的项目是对框架的扩展,并提供了多个入口点和钩子。我无法控制从托管框架到我的扩展的函数calles的顺序或数量。我的扩展的每个部分都创建了一个DB处理程序的实例,但可以重用实际的底层连接。

数据库处理程序的创建是通过db-factory完成的。所以我可能必须在那里实现某种连接缓存......

1 个答案:

答案 0 :(得分:0)

不,mysqli ext并没有遵循那种懒惰的mysql ext行为,并且有一个原因 所以,你必须始终明确地解决mysqli对象。但唯一的问题是可变范围。但只要您看到$mysqli个对象,就可以正确使用它。

但是,还有另一个问题:您根本不应该在应用程序代码中处理$mysqli对象。这是旧的mysql ext的一个问题,它也是mysqli ext的问题 - 它不打算在应用程序代码中使用。

必须创建某种包装器,以封装所有与数据库相关的东西,并且在应用程序代码中始终只使用此包装类。

所以,给自己这样一个包装器,创建一个它的实例,然后传入每个类并作为参数运行。