我有问题运行PHP脚本插入数据到MySQL。我得到的错误是“504网关超时nginx”当PHP页面被这个超时卡住时,10,102行数据被输入到数据库中。我打算在脚本的一个负载中插入160,000行。PHP脚本与MySQL查询超时
我通过使用SQL的准备语句使我的代码更高效。 的SQL也都设立在这个结构:
INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6),(7,8,9);
我已阅读SO PHP script times out和How to keep a php script from timing out because of a long mysql query
我试图加入我的代码的开始,但似乎并没有发挥作用:
set_time_limit(0);
ignore_user_abort(1);
任何人都可以显示我的数据将数据集分割成chunnks和每个块数据插入?
我将展示的代码插入到MySQL低于
// prepare and bind
$stmt = $link->prepare("INSERT INTO MyGuests (`eventID`,`location`,`date`,`barcode`,`runner`,`time`,`Run Points`,`Volunteer Points`,`Gender`, `Gender pos`) VALUES (?,?,?,?,?,?,?,?,?,?)");
$stmt->bind_param("isssssiisi", $eventID,$location,$date,$barcode,$runner,$time,$runpoints,$volpoints,$gender,$genderpos);
// set parameters and execute
for($x=0; $x < count($array_runner); $x++){
$eventID=null;
$barcode=$array_barcode[$x];
$runner=$array_runner[$x];
$time=$array_time[$x];
$runpoints=$array_score[$x];
$volpoints=' ';
$gender=$array_gender[$x];
$genderpos=$array_gender_pos[$x];
$stmt->execute();
}
$stmt->close();
$link->close();
我是新来使用MySQL,并正在寻找这个问题的一些指导部分。
我觉得你没有权利改变php的时间限制,在这种情况下你没有任何机会用这种方式解决这个问题。你可以将你的SQL查询拆分成分离的部分 – Peter
你可以将这个脚本作为PHP CLI运行,即从命令行运行!没有'max_execution_time'应用于CLI – RiggsFolly
感谢您的评论彼得。Ah“没有权限”很烦人,这个项目只在iPage上的共享服务器上运行,并且没有计划使用专用服务器/ VPS。你能否提供任何代码将分离的部分中的SQL分开? – Jeanclaude