我已经将我的测试服务器和新的生产服务器从 php 5.2 升级到了 5.4.7。此外,在 PHP 代码中,我将连接到 mysql 数据库的旧方法替换为新方法(所以我使用 mysqli_connect() 方法代替 mysql_connect()。这是因为从 PHP 版本 4.5 开始不推荐使用旧方法。
一切似乎都工作正常并且经过了很好的测试 - 我想,但我只是发现在进行批量单个插入查询时,mysql连接挂起。这发生在作为生产服务器(Centos Linux)的测试服务器上。所以 PHP 确实可以很好地建立连接,只有在进行批量插入时,连接才会中途丢失。
测试服务器(Windows XP,使用 XAMPP)给出错误消息:
mysqli_connect():(HY000/2002): 每个套接字地址(协议/网络地址/端口)通常只允许使用一次
在 linux 机器上,我收到错误消息:
mysqli_connect():(HY000/2003):无法连接到'127.0.0.1'上的MySQL服务器(99)
我基本上在做的是:
While 循环查询结果
{
$query="插入 (a,b,c,d) 值(1,2,3,4)";
查询执行($查询);
}
我认为问题在于我正在执行许多插入的事实;大约 100.000 个单独的插件。我没有使用持久的 mysql 连接。
我不知道是什么原因造成的(mysql、PHP、服务器本身)?
添加:运行/执行查询的代码(简化)类似于:
//the database connection class
class database($query)
{
public function setup_connection() {
$this->link=mysqli_connect('localhost', 'my_user', 'my_password', 'my_db');
}
public function execute_query($query){
mysqli_query($this->link, $query);
}
}
//a regular php page using the class
$obj_db1=new database($query);
while($obj_db1->loop())
{
$obj_db_insert=new database($query);
}