我已将我的测试服务器和新生产服务器从php 5.2升级到5.4.7。 另外在PHP代码中,我用新的方式替换了连接到mysql数据库的旧方法(因此我使用mysqli_connect()方法代替mysql_connect()。这是因为从旧版本的4.5版本开始,旧方法将被弃用。 / p>
Everythings似乎运行良好且经过了充分测试 - 我想,但我刚刚发现,在进行mysql连接挂起的批量单独插入查询时。这在测试服务器上作为生产服务器(Centos Linux)发生。因此,PHP确实可以很好地建立连接,只有在进行批量插入时才会使连接丢失一半左右。
测试服务器(Windows XP,使用XAMPP)给出错误消息:
mysqli_connect():( HY000 / 2002):每个套接字地址只有一种用法 (协议/网络地址/端口)通常是允许的
在linux机器上,我收到错误消息:
mysqli_connect():( HY000 / 2003):无法连接到MySQL服务器 '127.0.0.1'(99)
我基本上做的是:
While循环查询结果
{
$ query =“插入(a,b,c,d)值(1,2,3,4)”;
query_execute($查询);
}
我认为问题在于我正在执行许多插入;大约100,000个单独的插入。我没有使用持久的mysql连接。
我对导致这种情况的原因一无所知(mysql,PHP,服务器本身)?
加入: 运行/执行查询的代码(简化)类似于:
//数据库连接类
类数据库($ 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);}
}
//使用类
的常规php页面$ obj_db1 =新数据库($ query);
而($ obj_db1->环())
{
$ obj_db_insert = new database($ query);
}
帮助表示赞赏!
帕特里克答案 0 :(得分:2)
确保在插入代码中每次都不打开与数据库的新连接。
<强>更新强> 我的猜测是正确的,并且基于您刚发布的代码,
让你的课程如下:
class database
{
public function setup_connection() {...}
public function execute_query($query){...}
public function close_connection(){...}
}
然后在通话中如下所示:
$db = new database();
$db->setup_connection();
//execute your queries as much as you want ...
//loop start
$db->execute_query($query);
//loop end
// close connection
$db->close_connection();
我希望这会有所帮助。