PHP 캐시 시스템 APCu 확장 사용

모두memcached나redis와 같은 캐시 시스템을 사용하여 일상적인 캐시를 하거나 데이터에 저항하거나 자주 사용하는 핫이슈 데이터를 저장한 적이 있을 것이다. 사실 작은 프로젝트에서 PHP도 우리를 위해 간단한 캐시 시스템을 준비했기 때문에 우리의 일상적인 일반 규모 사이트 개발에 완전히 대처할 수 있다.이 확장은 APCu 확장입니다.

APCu 확장


APCu 확장은 APC 확장의 업그레이드입니다. APC 확장은 이미 유지되지 않습니다.이 두 세트의 확장은 사실opcodecaching을 기반으로 한다.PHP 자체의opcode가 실현하는 캐시 능력이다.
APCu의 설치는 일반적인 PHP 확장과 마찬가지로 매우 간단하다. 가장 중요한 것은 이 확장이 매우 작다는 것이다.다운로드든 설치든 모두 초급으로 완성할 수 있다.그래서 소규모 프로젝트에 매우 편리하게 응용할 수 있고 PHP 원본이 지원하므로 별도의 포트 같은 설정이 필요 없다.

방법 설명


캐시 시스템은 일반적으로 증가, 삭제, 조회, 자체 증가 등 기능이 APCu 확장에 대응하여 실현된다.
  • apcu_add - 새 캐시를 만듭니다
  • apcu_cache_info - APCu의 모든 캐시 정보를 확인합니다
  • apcu_cas - 캐시 값을 새 값으로 업데이트합니다
  • apcu_clear_cache - 모든 캐시를 지웁니다
  • apcu_dec - 캐시 값을 스스로 줄입니다
  • apcu_delete - 캐시된 내용을 삭제합니다
  • apcu_enabled – 현재 환경에서 APCu 캐시 사용 여부
  • apcu_entry - 캐시 실체를 원자적으로 생성합니다
  • apcu_exists - 캐시가 있는지 확인합니다
  • apcu_fetch - 쿼리 캐시
  • apcu_inc―자체 캐시 값
  • apcu_sma_info - 캐시의 공유 메모리 정보를 조회합니다
  • apcu_store - 캐시 저장
  • 사용 프레젠테이션

    
    apcu_add("int", 1);
    apcu_add("string", "I'm String");
    apcu_add("arr", [1,2,3]);
    
    class A{
        private $apc = 1;
        function test(){
            echo "s";
        }
    }
    
    apcu_add("obj", new A);
    
    var_dump(apcu_fetch("int"));
    var_dump(apcu_fetch("string"));
    var_dump(apcu_fetch("arr"));
    var_dump(apcu_fetch("obj"));
    
    정상적인 사용은 비교적 간단하다. 우리는 각종 유형의 데이터를 추가하면 정상적으로 캐시에 저장할 수 있다.그러나 주의해야 할 것은 우리가 직접 대상을 저장하여 APCu 캐시에 넣을 수 있으며, 그것을 서열화하거나 JSON을 문자열로 만들 필요가 없으며, 시스템이 자동으로 서열화할 수 있다는 것이다.
    apcu_dd(string\key,mixedkey,mixedvar[,intttl=0]) 방법은 일반적인 캐시 추가이고, ttl=0) 방법은 일반적인 캐시 추가입니다. ttl는 기한이 지난 시간도 초 단위로 설정할 수 있습니다. 설정하지 않으면 장기적으로 유효합니다.APCu의 캐시 시한은 한 번의 CLI에서 유효하며, 한 번 더 호출해도 마지막 CLI에서 설정한 캐시 내용을 찾을 수 없습니다.PHP-FPM에서는 PHP-FPM 또는 FastCGI를 재부팅하면 캐시가 비활성화됩니다.
    다음은 흔치 않은 몇 가지 방법을 중점적으로 테스트해 봅시다.
    
    apcu_cas("int", 1, 2);
    var_dump(apcu_fetch("int"));
    
    // Warning  apcu_cas() expects parameter 2 to be int
    apcu_cas("string", "I'm String", "I'm  New String");
    
    apcu_cas (string $key, int $old, int $new) 는 $old 값을 $new 값으로 수정하는 것입니다. 숫자 형식의 내용만 수정할 수 있습니다. 문자열 수정이면 오류가 발생합니다.이 함수는 어떤 우세가 있습니까?그것의 가장 큰 우세는 원자성, 즉 높은 병발의 영향을 받지 않는 것이다.이와 유사한 것은 apcu_store (string $key,mixed $var [,int $ttl = 0]) 방법이지만, 이 방법은 캐시의 내용을 간단하게 수정할 뿐입니다. 이 캐시의 키가 존재하지 않으면 새로 만듭니다. 형식의 제한을 받지 않고 원자성도 없습니다.
    
    apcu_entry("entry", function($key){
        return "This is " . $key;
    });
    var_dump(apcu_fetch("entry"));
    apcu_entry (string $key,callable $generator [, int $ttl = 0]) 이 함수의 역할은 $key가 이 캐시가 존재하지 않으면 $generator라는 익명 함수를 실행하고 $key를 키 값으로 전달한 다음return의 내용을 이 느린 값으로 만드는 것입니다.
    
    var_dump(apcu_cache_info());
    마지막으로 현재 시스템의 모든 APCu 캐시 정보를 보고 싶을 때 이 apcu_cache_info () 함수만 있으면 됩니다.

    총결산


    캐시에 데이터가 매우 많을 때, APCUIterator 교체기를 제공하여 우리가 캐시 정보의 순환 조회와 관련 통계를 진행할 수 있도록 한다.한 마디로 하면 이 시스템은 매우 편리한 소규모 캐시 시스템으로 일상적인 개발에서 작은 기능을 충분히 사용할 수 있다.
    테스트 코드:
    github.com/zhangyue050…
    다음은 PHP 캐시 시스템 APCu 확장의 사용에 대한 상세한 내용입니다. PHP 캐시 시스템 APCu 확장에 대한 더 많은 자료는 저희의 다른 관련 글을 주목해 주십시오!

    좋은 웹페이지 즐겨찾기