我有一个包含超过 134675 个值的数组,我需要将它们插入到我的 mySQL 表中。我知道使用 PHP 和 mySQL 数据插入所需的所有东西。有没有一种快速方法可以让我在 30-60 秒内将所有这些值插入远程服务器?因为当我尝试使用 foreach
方法时,页面超时。远程服务器不允许数据库连接持续超过 60 秒。我不知道为什么。所以请帮我快速逻辑。
这是我试过的一些代码:
foreach($array as $value)
{
$sql="insert into collected values('".$value."')";
$res=mysql_query($sql);
//then some extra code.
}
注意 我在服务器上没有那么多访问权限。我的数据库帐户只能插入值,仅此而已。它是对 mySQL 数据库的约束。我不能使用 CSV 或任何其他东西。
最佳答案
您可以在循环中包含 mysql_ping()
功能。此函数检查以确保连接已打开,如果未打开,则重新连接。
使用您自己的示例,您可以执行以下操作:
foreach($array as $value) {
mysql_ping($dbconn);
$sql="insert into collected values('".$value."')";
$res=mysql_query($sql);
//then some extra code.
}
编辑:需要注意的是,根据文档,在 MySQL 5.0.14 之后,PHP 不会自动重新连接。如果你使用更新版本的 MySQL,你将不得不加入你自己的连接逻辑,可能像这样(我还没有测试过):
function check_dbconn($connection) {
if (!mysql_ping($connection)) {
mysql_close($connection);
$connection = mysql_connect('server', 'username', 'password');
mysql_select_db('db',$connection);
}
return $connection;
}
foreach($array as $value) {
$dbconn = check_dbconn($dbconn);
$sql="insert into collected values('".$value."')";
$res=mysql_query($sql, $dbconn);
//then some extra code.
}
关于php - 在远程数据库中插入 134675 个值的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6231285/