我有几个PHP文件,每个文件都需要一个Mysql连接。然后我有一个公共文件connect.php与mysql基本数据库查询,我已经在Header.php中添加了这些文件。
但值得关注的是每次connect.php建立与DB的连接(因为这包含在Header中)。这将是有害的MySql Server,我的应用程序很大,约。其中有200个表,有20万个条目。我想通过php.ini进行数据库连接,意味着一旦我配置了php.ini,就不需要在代码中的任何地方添加mysql_connect()查询。 php.ini中只有一个设置。请解释一下如何做到这一步我不熟悉php.ini
答案 0 :(得分:0)
我的应用程序很大,约。其中有200个表,有20万个条目
那不算大。但是,大量的表通常是您尝试对数据进行分片并打破规范化的一个很好的指标。
意味着一旦我配置php.ini然后就不需要添加mysql_connect()查询代码中的任何位置
添加mysql_connect()真的很难吗? ?如果用户名/密码设置在ini文件或自动添加的包含文件中,则甚至无需显式设置。实际上,如果将db函数包装在include文件中,则可以懒得连接:
<?php
ini_set('mysql.default_user', 'scott');
ini_set('mysql.default_password','pussycat');
$GLOBALS['my_db_handle']=false;
function wrap_mysql_connect()
{
if (false===$GLOBALS['my_db_handle']) {
$GLOBALS['my_db_handle']=mysql_connect();
@mysql_select_db('my_preferred_db', $GLOBALS['my_db_handle']);
@mysql_set_charset('utf8', $GLOBALS['my_db_handle']);
}
return $GLOBALS['my_db_handle'];
}
function wrap_mysql_query($sql)
{
if (false===$GLOBALS['my_db_handle']) {
wrap_mysql_connect();
}
if (false===$GLOBALS['my_db_handle']) {
trigger_error(mysql_error());
return false;
}
$result=mysql_query($sql, $GLOBALS['my_db_handle']);
if (false === $result) {
trigger_error(mysql_error());
return false;
}
return result;
}
虽然在不需要时打开数据库连接(并且在不再需要时无法显式关闭它们)会不必要地耗尽资源,但开销并不大 - 请注意过早优化。