3

我想在我的数据库中插入大约 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 秒,这是我的错误。

致命错误:第 92 行 C:\wamp\apps\phpmyadmin3.4.10.1\libraries\session.inc.php 中的最大执行时间超过 30 秒

我正在运行 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

到目前为止没有运气......关于如何运行长查询的任何建议,例如this>?

我正在考虑暂时将其放入在 node.js 中运行的服务器脚本中

4

2 回答 2

3

我认为您正在寻找的是set_time_limit() http://php.net/manual/en/function.set-time-limit.php

但是您应该看看是否有任何方法可以提高查询本身的性能。

于 2012-07-27T17:54:42.177 回答
0

你们有一些非常好的建议,我无法为我的特定应用程序工作。我的解决方案是从 node.js 执行查询,将 sql 从我的客户端发送到服务器。而不是使用 phpMyAdmin。我确实尝试从我的 phpMyadmin 脚本中删除时间限制,但它没有用。我通过 websockets 传递了查询,但这不是必需的。

于 2012-07-27T21:55:30.830 回答