2014-05-21 2 views
0

나는 계속적으로 짹짹을 처리하고 그들을 다른 아카이브로 분류하는 프로그램을 만들었습니다.mysql_query PHP의 SELECT 문이 잠시 후 결과를 반환하지 않습니까?

그 때문에 나는 계속해서 반복하고 (WHILE TRUE) 항상 새로운 트윗이 데이터베이스에 도착했는지 확인하는 PHP 스크립트를 가지고 있습니다. $ DB-> 연결이 문제가 놓여 있었다이다

class MySQLDB 
{ 
var $connection;  

function MySQLDB(){ 
     $this->connection = mysql_connect(DB_SERVER, DB_USER, DB_PASS) or die(mysql_error()); 
     mysql_select_db(DB_NAME, $this->connection) or die(mysql_error()); 
    } 

} 
$db = new MySQLDB; 

인 경우

mysql_query("SELECT id from archives", $db->connection); 

: 따라서도 트윗에 속할 수있는 모든 가능한 아카이브를 선택합니다. 이 아카이브 가져 오기는 잘 작동하지만 잠시 후 (2 ~ 3 일) 결과가 반환되지 않습니다. mysql select 문은 결과를 반환하지 않지만 오류는 발생하지 않습니다. 이 문제가 이미 당신과 마주 친 누군가입니까? 아무도 여기에 문제가 될 수있는 것에 대한 힌트를 줄 수 있습니까?

고맙습니다.

+1

당신을 이해한다면 프로그램은 질의를 실행하여'archive' 테이블에서'id' 값을 가져오고 일정 시간 후에 쿼리는 빈 결과 집합을 반환하기 시작합니다. 그 맞습니까? 쿼리를 실행할 때 오류를 확인하고 있습니까? –

+1

쿼리를 수행 할 때마다 데이터베이스 연결을 끊었다가 다시 연결합니까? 나는 매우 빠른 쿼리를 기대하기 때문에 루프에 넣으면 초당 여러 번 (아마도 수백 개) 수행 될 수 있습니다. 100 만회에서 3 일에 걸쳐 2 천 5 백만 건의 쿼리가 발생합니다. – Kickstart

+0

@ ollie-jones 맞습니다. 어떤 이유로 쿼리가 잠시 후 결과를 반환하지 않습니다. 실제로 쿼리가 실행되는 횟수는 엄청 크지 만 생각하면 안된다. 빈 문자열과 다른 경우 mysql_error()를 출력합니다. 내가 생각할 수있는 유일한 방법은 데이터베이스 연결과 어떻게 든 관련이 있다는 것입니다. 클래스 MySQLDB (위 참조)는 별도의 config.php 파일에 있으며 PHP 스크립트에 포함되어 있습니다. (왜냐하면 데이터베이스는 다른 PHP 스크립트에서도 사용되기 때문입니다). – Baptist

답변

0

mysql_query가 무엇을 확인합니까?

빈 결과 집합 대신 어쩌면 오류에 대해 '거짓'을 반환합니까?

mysql_query() or die('error:'. mysql_error()); 

내 생각 엔이 데이터베이스가 너무 큰에서 오랫동안 실행 한 후, 레코드의 액수가 가져올 수 있다는 것입니다보십시오. 이미 읽은 기록을 삭제합니까?

관련 문제