2012-07-27 4 views
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 초 밖에 실행할 수 없다는 것이 나의 잘못이다.

치명적인 오류 : C를 초과 30 초 최대 실행 시간 : 라인 \ WAMP \ APPS \ phpmyadmin3.4.10.1 \ 라이브러리 \ session.inc.php 나는 WAMP 서버와 I를 실행하고 92

내 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를에서 실행 내 서버 스크립트에 넣어 일시적으로 고려하고

+0

오류 메시지를 읽으면 phpmyadmin이'C : \ wamp \ apps \ phpmyadmin3.4.10.1 \ libraries \ session.inc.php'에 다른 실행 시간을 설정하는 것처럼 보입니다. 파일 또는 php.ini 대신 phpmyadmin 구성을 편집하십시오. –

+1

데이터를 100 개의 청크로 그룹화하고 각각에 대해 별도의 삽입을 실행할 수 있습니다. –

+1

PHP 스크립트 맨 위에'set_time_limit (0);'하지만 실제로 PHP (예 : JSON)에 데이터를 전달하고 준비된 문을 사용해야합니다. 당신이 치는 다음 문제는 상당히 확신합니다. MySQL은 그 크기의 쿼리를 받아들이지 않을 것이고/또는 PHP는 그 문자열을 다루는 메모리가 부족할 것입니다. – DaveRandom

답변

0

너희들은 내 특정 응용 프로그램에서 작동하지 못하는 몇 가지 정말 큰 sugguestions 있습니다. 내 솔루션은 node.js에서 내 클라이언트에서 서버로 SQL을 보내는 쿼리를 실행하는 것이 었습니다. 대신 phpMyAdmin을 사용하십시오. 내 phpMyadmin 스크립트에서 시간 제한을 제거하려고했지만 작동하지 않았다. 웹 소켓을 통해 쿼리를 전달했지만 필수는 아닙니다.

+0

또한 max_execution_time = 0이 예상대로 작동하지 않는다고 말해야합니다. 따라서 필요한 경우 300 (초)라고 말하는 대신 긴 값으로 설정하십시오. –

3

나는 당신이 찾고있는 것은 set_time_limit()http://php.net/manual/en/function.set-time-limit.php

생각 그러나 개선 할 수있는 방법이 있는지 당신이 볼 수 쿼리 자체의 성능.

+0

phpMyadmin을 사용하면 php를 삽입 할 수 없으면 PHP 스크립트가 아닙니다. PHP 스크립트가 아닌 경우 – Shawn

+0

@Shawn PHP 스크립트가 아닌 경우 왜 PHP에 태그를 지정 했습니까? – Matt