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

これまでのところうまくいきません...このような長いクエリを実行する方法について何か提案はありますか?

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

皆さんは、私が特定のアプリケーションで仕事をすることができなかったという本当に素晴らしい提案をいくつか持っています. 私の解決策は、クライアントからサーバーにSQLを送信するnode.jsからクエリを実行することでした。phpMyAdmin を使用するのではなく。phpMyadmin スクリプトから時間制限を削除しようとしましたが、うまくいきませんでした。Websockets 経由でクエリを渡しましたが、必須ではありません。

于 2012-07-27T21:55:30.830 に答える