2011-09-08 6 views
0

IP 주소를 기반으로 국가 코드를 가져와야하는 시스템에서 작업 중이며 여러 서버에서 모든 모양과 크기의 여러 응용 프로그램에 액세스 할 수 있어야합니다.Curl 대 원격 데이터베이스 대 로컬 파일?

현재로서는 MaxMind에서 다운로드 한 .dat 파일에서 국가 코드를 확인하는 기존 geo.php 라이브러리에 대한 cURL 요청을 통해 얻은 것입니다. 분명히이 방법은 메모리 누수로 인해로드가 많은 상황에서 문제가 발생 했습니까? 아무도 확실하지 않습니다.

우리는 cURL을 사용하지 말고 로컬 파일에 저장된 데이터를 사용하여 로컬 기반 지오 코딩 라이브러리에서 countrycode를 파생시킬 것을 제안했습니다. 또는 아마존 (예 : Amazon S3)에서 호스팅되는 마스터 파일 일 수 있습니다. 물론 IP-to-country 조회 파일이 불필요하게 수백 개의 다른 장소에 저장되는 것에 조심스럽게 생각합니다.

내가해온 한 가지는 mysql 데이터베이스에 데이터를 저장하고 연결하여 필요한 결과를 얻은 것입니다. 확실하지는 않지만 내 사이트는 일반적으로 중앙 집중식 mysql 데이터에 연결하는 동안 신속하고 효율적으로 실행되므로이 ​​특정 문제를 해결할 수있는 좋은 방법이 아닌 것 같습니다.

내 질문 : 다른 방식으로 데이터를 가져 오는 상대적인 오버 헤드는 무엇입니까? 그것을 cURLing하고, 원격 데이터베이스에 요청하고, 로컬 파일에서 가져오고, 다른 곳에서 호스팅되는 파일에서 가져 오는 것입니까? 이들 중 어느 것이 더 효율적인지 또는 비효율적인지 그리고 효율성의 상대적 이득이 문제를 일으키기에 충분한 지 여부를 알아내는 것은 어렵습니다 ...

답변

0

저는 maxmind에서 약 1.5 년 동안 국가 코드 텍스트를 얻기 위해 cURL을 사용하여 웹 사이트를 만들었지 만 말할 수있는 한 아무런 문제가 없었습니다. 내가 한 일은 cURL 요청에 대해 1 ~ 2 초의 시간 초과를 설정하고 설정하지 않은 경우 설정된 국가 코드로 다시 되돌려 놓았습니다. 우리는 내가 믿는 maxmind에 대해 약 1 백만 건의 질의를 거쳤으므로 사용되었을 것임에 틀림 없다 .... 그 시간에 도달하지 못하면 더 이상 그 페이지를 느리게하고 싶지 않았다. 이것이 응답 시간에 의존하는 외부 라이브러리 사용의 주요 단점입니다.

로컬로하는 것이 중요 할 주요 관심사는 다음과 같습니다. 지금부터 1 년 후입니까? 분명히 현재 IPv4 풀에서 더 이상 다른 IP 주소를 가져올 수는 없지만 잠재적으로 ISP는 다른 국가의 IP를 구매/판매/거래 할 수 있습니다 (어떻게 작동하는지 모르지만, 다른 나라와 그들은 결코 그들에게 어떤 패턴을 가지고있는 것처럼 보이지 않는다). 그런 일이 발생하지 않으면 그 부분을 무시하십시오.로컬에서 실행하는 것에 대한 또 다른 사항은 mysql 쿼리 캐시를 사용하여 결과를 저장할 수 있으므로 후속 페이지로드에서 리소스에 대해 걱정할 필요가 없으며, 또는 내가 한 일을 수행하고 쿠키에 저장하고 첫 번째를 확인하는 것입니다. cURLing (또는 조회를하기 전에).

+0

음, 음, 현재 우리는 MaxMind 데이터를 가져 와서 조직 내의 어딘가에 저장하고 있습니다. 우리가 그것을 한 곳에서 유지할 수 있다면 수동으로 만 업데이트하는 것이 상대적으로 쉽습니다. 그것을 사용하고자하는 모든 장소로 전파되어야한다면 최신 정보를 유지하기가 매우 어렵습니다. 우리는 MaxMind의 서비스 및 응답 시간에 의존하고 싶지 않습니다. 의심의 여지가 없지만 좋은 것 같습니다. 그래서 여러 개의 서로 다른 사이트가 동일한 IP 암호 해독 코드와 데이터를 사용하는 최선의 방법을 찾고 있습니다 ... – thesunneversets

0

이 질문에 대한 답을 잘못하셨습니다.
는 두 가지 방법이 있습니다 :

  • 네트워크

그리고 단 하나의 대답 조회

  • 로컬 자원 요청 : 클라이언트 요청을 서비스하면서

    는 모든 네트워크 조회를 수행하지 마십시오.

    로컬 리소스 (동일한 데이터 센터의 한도 내에서 가능)에 액세스하는 한 괜찮습니다.
    컬 또는 데이터베이스와 상관없이 원거리 리소스를 요청하는 경우 문제가 발생합니다.

    저 규칙은 저에게 명백하게 보입니다.