2016-10-19 2 views
0

Android 앱용 RESTful API을 개발해야하며 슬림 프레임 워크를 사용하여 PHP를 사용하기로 결정했습니다.슬림 앱 (PHP) : 영구/캐시 데이터를 저장해야합니다.

일부 배경은 현재 클라이언트 응용 프로그램이 요청할 때마다 서버가 일부 DB 작업을 수행하고 페이로드를 만듭니다. 이것은 응용 프로그램 사용량이 많은 시간대에 서버에 많은 부하를줍니다. 그래서이 페이로드를 캐시하고 요청이있을 때마다 사용할 수있는 방법을 찾고 있습니다. 이 캐시는 읽기 횟수에 비해 거의 업데이트되지 않습니다 (관리자가 DB 변경시에만).

이를 테스트하기 위해 나는 다음과 같은 코드를 시도, index.php를

$app->flag = 1; 

그리고 엔드 포인트에서

$app->get("/getContent", function() use ($app){ 
    if($app->flag == 1){ 
     echo 'Changing value'; 
     $app->flag = 0; 
     return; 
    } 
    echo $app->folder; 
}); 

는 "값 변경"인쇄되면 이상적인 케이스가 될 것이다 그 후 처음으로 0이됩니다. 그러나 '$app->flag'의 값은 끝점의 시작 부분에서 항상 1입니다. 엔드 포인트에 대한 연속 호출간에 데이터를 유지하려면 어떻게해야합니까?

또한 매번 파일에 페이로드를 저장하고 엔드 포인트 요청을 처리하기 위해 I/O를 수행하는 것이 좋습니다 (관리자가 파일을 업데이트하려고 시도 할 경우 I/O 예외가 발생합니다. 끝점에서 클라이언트에 대해 읽는 중입니까?)

저는 PHP에 상당히 익숙하며, 똑같은 것을하기 위해 통찰력이나 다른 아이디어에 진심으로 감사 할 것입니다.

+0

php- apcu (키/값 캐싱을 위해 이전 php-apc와 동일한 인터페이스를 사용합니다). 이렇게하면 파일 대신 메모리에 캐시가 저장됩니다 (훨씬 훨씬 느림). 자세한 내용은 다음을 참조하십시오. http://php.net/manual/en/book.apcu.php –

+0

데이터 구조와 유형은 무엇입니까? – krasipenkov

+0

데이터가 거의 업데이트되지 않고 피크 시간에만 문제가 발생하는 경우 [HTTP 캐싱] (http://www.slimframework.com/docs/features/caching.html)을 사용하지 않으시겠습니까? –

답변

0

여기 내 제안은 다음과 같습니다

  1. 당신이 데이터를 저장하기 위해 memcache를 사용할 수 있습니까? DB 작업과 처리를 한 번하고 json을 빌드하여 memcache (데이터를 메모리에 직접 저장하고 I/O 작업을 피할 수있는 플러스로)에 저장하십시오.

  2. 모든 DB 처리를 수행하고 json 다른 테이블 (결과 캐싱에 사용)에 저장하십시오. 이 접근법의 주요 관심사는 DB를 한 번에 치는 사용자 수입니다. 단순한 읽기가 될 것이고 질의 결과가 DB 엔진에 의해 캐쉬 될 것이지만, 한번에 사용되는 DB 연결의 수를 고려해야한다.