我想插入約12500行到我的遊戲服務器的地圖數據庫。 這是我的腳本生成查詢長插入查詢
sql = "INSERT INTO `legends`.`map` (`x`, `y`, `land`, `collision`, `impedance`, `effect`) VALUES "
for (y=0;y<ig.game.collisionMap.data.length;y++){
for (x=0;x<ig.game.collisionMap.data[y].length;x++){
if (x==0&&y==0){
comma=""
}else{
comma=","
}
sql=sql+comma+"("+x*55+","+y*55+",'kesmai',"+ig.game.collisionMap.data[y][x]+","+ig.game.backgroundMaps[0].data[y][x]+", '0')";
}
}
console.log(sql)
輸出爲y = 86,X = 145 我的客戶端腳本訪問數據的地圖,所以我只是粘貼輸出到phpMyAdmin運行查詢。我碰到的問題(我期望)是我的PHP腳本只能運行30秒,這是我的錯誤。
致命錯誤:用C超過30秒的最大執行時間:\瓦帕\應用\ phpmyadmin3.4.10.1 \庫\上線session.inc.php 92
我正在運行WAMP服務器和我試圖編輯我的php.ini文件在這裏
; Maximum execution time of each script, in seconds
; http://php.net/max-execution-time
; Note: This directive is hardcoded to 0 for the CLI SAPI
max_execution_time = 0
; Maximum amount of time each script may spend parsing request data. It's a good
; idea to limit this time on productions servers in order to eliminate unexpectedly
; long running scripts.
; Note: This directive is hardcoded to -1 for the CLI SAPI
; Default Value: -1 (Unlimited)
; Development Value: 60 (60 seconds)
; Production Value: 60 (60 seconds)
; http://php.net/max-input-time
max_input_time = -1
到目前爲止沒有運氣......關於如何運行一個長查詢如此>的任何建議?
我正在考慮暫時將它放在它運行在我的Node.js服務器腳本
如果您閱讀錯誤消息,它看起來像phpmyadmin在'C:\ wamp \ apps \ phpmyadmin3.4.10.1 \ libraries \ session.inc.php'中設置了不同的執行時間。嘗試編輯該文件或phpmyadmin配置而不是php.ini – 2012-07-27 17:53:21
您可以將數據分組爲100個塊,併爲每個塊分別運行一次插入。 – 2012-07-27 17:53:44
'set_time_limit(0);'在PHP腳本的頂部 - 但實際上您應該將數據傳遞給PHP(例如JSON)並使用準備好的語句。下一個你會遇到的問題我相當確定的是,MySQL不會接受這個大小的查詢和/或PHP將耗盡內存,試圖處理一個很大的字符串。 – DaveRandom 2012-07-27 17:54:26