我为每个数据库表对象创建了一个类。每个类都负责连接/查询/数据格式(数据库表特定逻辑),因为我更喜欢为每个类分配一个连接以获得更好的模块化。此外,我正在为某些表和查询使用特定的连接。
我的问题是如何检查一个连接是否已经存在,这样它就不会启动另一个连接?
基本上我想检查是否已经建立了具有相同用户名/密码/数据库的连接。或者这是没有必要的,因为 mySql 不会为同一用户启动新连接?如果是这样,请解释。
经过进一步研究发现这是不可能的……它需要获取线程 ID 并将 conn 与线程 id 一起使用,并且它会像持久性 conn 一样工作;或者它需要跟踪脚本期间使用的每个线程 ID,这有点没用。
目前还没有一个简单的方法来做到这一点......持久连接可以是一种选择,但你必须注意连接清理并再次 sux :)
附言:最终我确实在我的应用程序运行期间为连接创建了一个跟踪系统(那些说将它们存储在全局可用对象中的人我们是对的)。将 conn 对象和 conn params 存储在单例类对象的 2 个数组中,检查 params 是否已经存在于 params 数组中,如果不存在,则创建新的 conn,如果是,则从与 params 所在键相同的数组键中获取 conn 对象被发现...我已经有了为此制作的体系结构但不想使用那个类...不是我开始的逻辑:),并且还想将它放在一个库项目中,这就是为什么我正在寻找一个简单而抽象的解决方案,但只有一个特定的解决方案:)
最佳答案
- 为每个类创建新连接不是一个好主意。它可能对您来说是模块化的,但您的 mysql 服务器很快就会因
太多连接
错误而变得臃肿。
我建议使用单例模式和一些 OO。
class Singleton{
private static $instance=null;
public function connection(){
if(self::$instance==null){
self::$instance = mysql_connect(); // define it in your way,
}
return self::$connection;
}
}
class TableA extends Singleton{
function find($id){
$query="select * from `A` where `id`='$id'";
mysql_query($query, $this->connection());
... // other codes
}
}
关于php - 在 php 脚本中检查特定的 mysql 连接是否已经存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8685896/