我有問題運行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