我是PHP的初学者。我试图将大量的项目插入数据库。我正在使用for
循环和mysqli_query
命令。
我的伪代码是这样的:
for ($i=0; $i<50000; $i++) {
mysqli_query($con, "INSERT INTO users (name, age) VALUES ('$name','$age'); ") ;
}
我的代码工作了几百个循环,然后噗:致命错误:在xxx行xxx上超过30秒的最大执行时间
对我来说,唯一的解决方案是每次循环中断后手动递增我的计数器。
还有其他解决方案吗?请帮助!
答案 0 :(得分:5)
不要对每个记录进行一次查询。您可以使用一个语句执行多个插入。以下示例同时执行50次。您可以安全地将其增加到100甚至500。
$counter = 0;
$query = 'INSERT INTO users (name, age) VALUES ';
for ($i=0; $i<50000; $i++) {
$counter++;
$sql .= "('$name','$age'),";
// execute query every 50 records
if ($counter % 50 === 0) {
$sql = rtrim($sql, ',');
mysqli_query($con, $query . $sql) ;
$sql = '';
}
}
答案 1 :(得分:0)
试一试
for ($i=0; $i<50000; $i++) {
try {
mysqli_query($con, "INSERT INTO users (name, age) VALUES ('$name','$age'); ") ;
} catch ($e) {
// You can log $e here if you want
// It would also probably be good to print out your query
// so you can go back and try it again later
}
}
答案 2 :(得分:0)
最有帮助的答案是Jay Blanchard的评论:
尝试使用
set_time_limit()
功能。致电set_time_limit(0)
会 删除执行脚本的任何时间限制。
我在页面的开头插入了set_time_limit(0),现在我的PHP脚本完美无缺!