2011-10-30 7 views
16

매 시간마다 실행되며 150,000 개 이상의 레코드를 구문 분석하는 cronjob이 있습니다. 각 레코드는 MySQL 테이블에 개별적으로 요약됩니다. 두 개의 웹 서비스를 사용하여 사용자 정보를 검색합니다. 인구 통계 학적Cronjob : 웹 서비스 쿼리

  1. 사용자 (IP, 국가, 도시 등)
  2. 전화 정보 (유선 또는 휴대 전화 및 휴대 전화 어떤 경우 캐리어는 경우)

때마다 나는 한 기록 I를 얻을 수 정보가 있는지 확인하고 그렇지 않으면이 웹 서비스를 호출하십시오. 내 코드를 추적 한 후이 호출이 모두 2 ~ 4 초 걸리며 내 cronjob이 매우 느려지고 시간에 통계를 컴파일 할 수 없다는 것을 알았습니다.

이러한 웹 서비스를 더 빠르게 만들 수있는 방법이 있습니까?

감사

답변

22

간단한 :

로컬 데이터를 얻을 mellissa 데이터 사용 : 당신은 또한 수 http://www.melissadata.com/fonedata.html

: 전화를위한 http://w10.melissadata.com/dqt/websmart/ip-locator.htm

  • : IP에 대한

    1. 을 memcache 또는 APC를 사용하여 캐시하십시오. api 또는 데이터베이스에서 데이터를 요청하지 않아도되므로 더 빨리 만들 수 있습니다.

  • +0

    무료 버전이 있습니까? – Tech4Wilco

    +0

    geodata 예 maxmind를 사용할 수 있지만 전화 번호는 의심 스럽습니다. –

    +0

    감사합니다. 그 중 하나를 시도해 보겠습니다. – Tech4Wilco

    4

    몇 가지 아이디어가 있습니다. 동일한 사용자가 돌아 오면 다른 테이블의 데이터를 캐싱하는 것이 매우 도움이 될 것입니다 ... 한 번만 찾아보고 재 방문 사용자에게만 제공합니다. 질문을 다시 읽으면 그 일을하는 것처럼 보입니다.

    조회를 수행해야 할 때 새 스레드를 생성 할 수도 있습니다. 이것은 각 요청에 대한 새로운 스레드 일 수 있습니다. 또는 이것이 가능하지 않은 경우 조회를 수행하고 결과를 업데이트 할 준비가 된 서비스 스레드를 가질 수 있습니다.