Php 防止数据库连接过多
我的数据库连接有一个包含文件,其中包含以下代码:Php 防止数据库连接过多,php,Php,我的数据库连接有一个包含文件,其中包含以下代码: $my_db_link = mysql_connect('my_host', 'my_username', 'my_password'); if (!$my_db_link) { die('Could not connect: ' . mysql_error()); } $my_db_name = 'my_database'; mysql_select_db($my_db_name); 如果我使用include_once()而不是in
$my_db_link = mysql_connect('my_host', 'my_username', 'my_password');
if (!$my_db_link) {
die('Could not connect: ' . mysql_error());
}
$my_db_name = 'my_database';
mysql_select_db($my_db_name);
如果我使用include_once()而不是include(),或者使用require_once()而不是require(),会有什么不同吗?我们最近出现了一个“连接太多”错误(“PHP警告:mysql_connect()[function.mysql connect]:连接太多”),我想知道是否使用include()创建了比需要更多的连接
include_once('my_db_connect.php');
而不是
include('my_db_connect.php');
如果您使用MODYPHP,请考虑使用连接池。有关连接持久性的更多信息,请参见:
使用instead of只能避免在同一运行时中包含同一文件。除此之外,如果存在具有相同凭据的连接,则将已经使用现有连接 但您可以尝试建立持久连接:mysql\u pconnect()
的行为与mysql\u connect()
非常相似,有两个主要区别
首先,在连接时,函数将首先尝试查找已使用相同主机、用户名和密码打开的(持久)链接。如果找到一个,将返回它的标识符,而不是打开新连接
其次,当脚本执行结束时,与SQL server的连接不会关闭。相反,该链接将保持打开状态以供将来使用(mysql\u close()
不会关闭由mysql\u pconnect()
建立的链接)
require()函数与
include(),但它处理
错误不同。如果有错误
发生时,使用include()函数
生成警告,但脚本
将继续执行。要求
生成致命错误,并且
脚本将停止
require_once的手册是
require_once()语句是
与require()相同,但PHP将
检查文件是否已被删除
包括,如果包括,则不包括
(要求)再来一次
使用持久连接可能需要对Apache和MySQL配置进行一些调整,以确保不超过MySQL允许的连接数
因此最好使用mysql\u pconnect()
来防止连接过载。检查手册
如果我使用include_once()而不是include(),或者使用require_once()而不是require(),会有什么不同吗
在这种情况下,不会。但是,在高性能应用程序中,在某些系统上使用include_once/require_once时要小心。每次在代码中使用*_once()函数时,PHP都会使用stat()调用来确定它是否已经包含该文件。
如果你对你的设计很小心,你会完全避免双重包含;大多数高级PHP开发人员通过使用面向对象编程和及时自动加载类文件来避免这种情况
编辑:
为无聊的人咀嚼的东西。:) 你有两个选择:每页不要多次调用
include
,或者可以多次调用include\u
。你可以研究singleton模式,自己开发一个数据库类。@Dalton这是个坏主意。见@Gordon有趣。。谢谢你的资源!在我们的案例中,唯一有效的方法是: