APCU (대체 PHP 캐시 사용자)는 메모리 레벨 캐싱을 지원하는 PHP 사용자 데이터 캐시 확장자입니다. Opcache와 함께 사용될 때 PHP 응용 프로그램 성능을 크게 향상시킬 수 있습니다. apcu_entry 함수는 간단한 인터페이스를 제공합니다.
$value = apcu_entry('cache_key', function() {
// 캐시 된 데이터를 생성하는 코드
return expensiveOperation();
});
캐시에 cache_key가 존재하면 해당 캐시 값이 직접 반환됩니다. 그렇지 않으면 콜백이 실행되면 결과가 캐시되고 반환됩니다.
APCU는 대부분의 Linux 배포에 대한 PHP Extension 패키지 관리자에 제공되며 설치 방법은 다음과 같습니다.
sudo apt-get install php-apcu
설치가 완료되면 PHP-FPM 또는 웹 서버를 다시 시작합니다.
sudo systemctl restart php7.4-fpm
Windows 사용자는 gitbox.net 에서 해당 버전의 APCU DLL을 다운로드하여 PHP의 내선 디렉토리에 배치 한 후 php.ini 에 추가 할 수 있습니다.
extension=php_apcu.dll
서버를 다시 시작한 후에 적용됩니다.
APCU_ENTRY 는 APCU 5.1.0 이상이 제공하는 새로운 인터페이스입니다. 낮은 버전의 APCU를 사용하는 경우이 기능을 호출 할 수 없습니다. 버전은 다음 코드로 감지 할 수 있습니다.
echo phpversion('apcu');
버전이 너무 낮 으면 확장자를 업그레이드하는 것이 좋습니다.
APCU는 기본적으로 명령 줄 모드 캐시를 활성화하지 않습니다. 구성하려면 php.ini를 열어야합니다.
apc.enable_cli=1
그렇지 않으면 APCU_ENTRY는 CLI에서 데이터를 캐시 할 수 없습니다.
APCU는 로컬 메모리 캐시이며 분산을 지원하지 않습니다. 응용 프로그램이 여러 서버에 배포되면 캐시 된 데이터는 동기화되지 않습니다. Redis 또는 Memcached와 같은 분산 캐시 솔루션을 결합하는 것이 좋습니다.
일부 공유 호스트에는 기본적으로 APCU가 비활성화되거나 구성이 제한되어 있습니다. 호스트 지원을 먼저 확인하고 필요한 경우 고객 서비스 또는 업그레이드 서비스에 문의하는 것이 좋습니다.
다음은 apcu_entry를 사용하여 데이터베이스 쿼리 결과를 캐시하는 방법을 보여주는 간단한 예입니다.
<?php
// 캐시 데이터베이스 쿼리 결과
$userData = apcu_entry('user_123', function() {
// 데이터베이스 쿼리 시뮬레이션
return ['id' => 123, 'name' => '장 산', 'email' => '[email protected]'];
});
print_r($userData);
실행 중에 첫 번째 실행은 콜백 함수를 호출하여 캐시를 생성하고 후속 캐시를 직접 읽습니다.
기능에는 오류가 없습니다 . APCU 확장자가 올바르게 설치되어 활성화되어 있는지 확인하십시오.
잘못된 캐시 : APC.enable_cli 가 1인지 확인하십시오 (CLI에서 사용되는 경우).
캐시가 업데이트되지 않음 : 콜백 함수가 논리적으로 정확하고 캐시가 정리되지 않았는지 확인하십시오.
위의 단계를 통해 APCU 확장을 구성하고 운영 환경에 따라 구성 조정을 통해 APCU_ENTRY 기능이 정상적으로 작동하고 PHP 응용 프로그램의 성능을 효과적으로 향상시킬 수 있습니다.