有一个名为function.php
的文件,我使用require_once
将其调用到网站的所有页面中。这个文件包含了超过一百个函数。
当有太多访问者或搜索引擎爬虫快速爬取时,我会从mysqli_connect()
得到max_user_connections
错误,紧接着会出现以下错误:
mysqli_query() expects parameter 1 to be mysqli, boolean given
函数文件的代码如下:
<?php
function db_connect(){
$link=mysqli_connect("host","dbuser","dbpass","dbname");
if (mysqli_connect_errno()) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_query($link,"set names 'utf8'");
}
db_connect();
function func_1(){
$result=mysqli_query($link,"select * from ...");
...
}
function func_2(){
$result=mysqli_query($link,"select * from ...");
...
}
.
.
.
function func_100(){
$result=mysqli_query($link,"select * from ...");
...
}
?>
最后,我关闭了数据库连接。由于我已经检查过我的数据库每个用户的最大连接数是50,而且主机提供商不会改变它(他们说这已经足够了)。
那么,一般来说我该如何解决这个问题?(使用简单的PHP或面向对象编程)
db_connect
函数正在将连接分配给一个局部变量,然后从未传递它出去。这会在某个地方让你遇到麻烦! - Ben Hillier