2014-12-10 2 views
0

특정 데이터를 가져 오는 데 API를 사용하고 있지만 대량으로 인해 사용자가 웹 사이트에 액세스 할 때마다 가져올 수 없습니다. 대신 나는 그것을 한 번 가져 와서 데이터베이스에 저장하고 사용자가 필요로하는 것을 쿼리하여 표시하는 방법을 생각했습니다. 요점은 새로 추가 된 데이터를 가져 오기 위해 다른 시간에 API에 대한 요청을 보내야한다는 것입니다.이 문제에 대해 시스템이 API에서 데이터를 다시 가져 오는 일정 시간을 예약하거나 수동으로 요청을 보내면 새로운 데이터. 따라서, 어떤 사용자의 요구를 내 DB에서 데이터를 API에서 가져온 데이터 캐싱 - php

  • 저장 데이터를 획득하고 쿼리 API에 처음으로

    1. 요청 :

      는 여기에 내가 순서를 상상하는 방법, 내 지점을 명확히하기 위해 데이터를 가져 오는 데 필요한 시간을 최소화하고 서버에 보낸 요청의 수를
    2. 다시 보낼 특정 시간 일정을 자동으로 설정합니다. 새 데이터가 추가되었는지를 찾기 위해 API에 대한 다른 요청

    내 질문 : 내 접근 방식을 효율적으로 수행 할 수 있습니까? 아니면 모든 것이 훨씬 쉬운 방법으로 수행 될 수 있습니까?

    UPDATE :

    내가 그들의 세부 사항과 함께 다른 투어를 나열하는 gAdventures API를 사용하는 것입니다. 요청에 따라 반환 투어의

    1. 최대 수는 투어 아이디가 관련된 모든 세부 사항을 가져 오기 위해 보낸 요청을해야한다 반환 여행 정보를 가져 오기 위해 100
    2. , 그래서 우리는 여행의 수천에 대해 말하고있다. 지금까지 정확한 데이터 크기를 사용할 수 없습니다.
  • +0

    데이터 ... 얼마입니까? 2MB? 500MB? –

    +0

    @MarcoMura 친절하게 질문에 업데이 트를 확인 – omarsafwany

    +1

    업데이트 후 : 데이터> 2MB의 경우 귀하의 시퀀스를 사용하는 것이 좋습니다. 그렇지 않으면 애니메이션을 시작하고 응답을 기다릴 수 있습니다. –

    답변

    0

    스위스 캐시 라이브러리를 사용하는 것이 좋습니다. 파일 기반 캐싱 및 APC를 지원합니다. 짝수 이미지 캐시 (WIP). 데이터 양이 많은 경우 기본적으로 gzip 압축이 지원됩니다. 따라서 많은 양의 데이터가 자동으로 압축됩니다. 내 라이브러리의

    예제 코드 :

    //Your API request function... 
    require_once("swiss_cache.php"); 
    
    $cache = new swiss_cache(); 
    
    $data = $cache->get("gAdventures_response"); 
    
    if(!$data) 
    { 
        $data = someFunctionThatCallsTheService(); 
        $cache->set("gAdventures_response", $data, 3600); //Save data for one hour. 
    } 
    

    그냥 당신이 swiss_cache.php에서 캐시 경로를 설정해야합니다! :) 내 라이브러리에 문제가 있거나 질문이있는 경우. 그냥 나에게 메시지를 보내! 문서 작업이 진행 중입니다.

    https://github.com/ajm113/swiss_cache

    +0

    라이브러리 관련 설치, 요구 사항 또는 사전 요구 사항에 대한 힌트가 필요하십니까?! github 링크가 거의 비어 있습니다. – omarsafwany

    +0

    지금부터는 더 많은 테스트와 개발이 필요합니다. 내가 아는 한 요구 사항이 있습니다. (선택 사항) APC : => 3.0.13, PHP : => 4.0.1, (옵션) GD => 1, (옵션) ImageMagic => 2.0.0 – ajm113

    +0

    그러나 문제 나 오류가 발생하면 현재 PHP 설정을 알려주세요. 의사에게 추가하겠습니다. – ajm113