>  기사  >  백엔드 개발  >  몇 가지 일반적인 PHP 캐시 작성 방법에 대해 이야기해 보겠습니다.

몇 가지 일반적인 PHP 캐시 작성 방법에 대해 이야기해 보겠습니다.

PHPz
PHPz원래의
2023-04-25 17:36:15648검색

웹사이트 개발에서 캐싱은 웹사이트 성능을 향상시키는 효과적인 수단입니다. 널리 사용되는 프로그래밍 언어 중 하나인 PHP는 다양한 캐싱 구현 방법도 제공합니다. 이 기사에서는 개발자가 웹 사이트 성능을 최적화하는 데 도움이 되는 몇 가지 일반적인 PHP 캐시 작성 방법을 소개합니다.

1. 파일 캐싱

파일 캐싱은 데이터를 직렬화하여 파일에 쓰는 방식으로 데이터 캐싱을 구현하는 간단한 캐싱 방법입니다. 코드는 다음과 같이 구현됩니다.

function getCache($key, $lifetime) {
    $cacheFileName = md5($key) . '.cache';    // 产生缓存文件名
    if(file_exists($cacheFileName) && (time() - filemtime($cacheFileName)) < $lifetime) {
        // 缓存未过期,直接读取缓存文件
        return unserialize(file_get_contents($cacheFileName));
    } else {
        // 缓存已过期或不存在,重新获取数据并缓存
        $data = getData();
        file_put_contents($cacheFileName, serialize($data));
        return $data;
    }
}

위 코드에서는 파일 이름 생성 규칙을 사용하여 캐시 파일 이름 충돌을 방지하고 동시에 캐시된 데이터를 얻을 때마다 캐시가 만료되었는지 여부를 확인하여 유효성을 보장합니다. 캐시된 데이터의 그러나 이 방법에는 서버 성능에 일정한 영향을 미치는 높은 파일 시스템 IO 작업 비용과 같은 몇 가지 결함도 있습니다.

2. 메모리 캐시

메모리 캐시는 캐시된 데이터를 메모리에 저장하고 파일 시스템 IO 작업이 필요하지 않으므로 데이터 수집 속도가 향상됩니다. 두 가지 일반적인 메모리 캐싱 솔루션이 있습니다.

  1. Memcache

Memcache는 여러 서버에서 캐시된 데이터를 읽고 쓸 수 있는 메모리 기반 분산 캐싱 솔루션입니다. Memcache의 PHP 확장은 간단하고 사용하기 쉬운 인터페이스를 제공하므로 개발자는 데이터의 캐시 읽기 및 쓰기 작업을 쉽게 구현할 수 있습니다. 코드는 다음과 같이 구현됩니다.

$memcache = new Memcache;
$memcache->connect('localhost', 11211);
// 缓存读取操作
$data = $memcache->get($key);
if($data === false) {
    // 缓存不存在,重新获取数据并缓存
    $data = getData();
    $memcache->set($key, $data);
}

위 코드에서는 Memcache 개체를 인스턴스화한 다음 포트 11211을 사용하여 로컬 Memcache 서비스와 연결을 설정합니다. 캐시 작업을 수행할 때 get 및 set 메서드를 통해 캐시를 읽고 쓰기만 하면 됩니다.

  1. Redis

Redis는 다중 데이터 구조와 고급 캐싱 전략을 지원하는 메모리 기반 고성능 비관계형 데이터베이스로, 높은 동시성 및 빠른 응답 네트워크 서비스를 지원할 수 있습니다. Redis용 PHP 확장은 API 지원을 제공하므로 개발자는 Redis를 캐싱 솔루션으로 쉽게 사용할 수 있습니다.

$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// 缓存读取操作
$data = $redis->get($key);
if($data === false) {
    // 缓存不存在,重新获取数据并缓存
    $data = getData();
    $redis->set($key, $data);
}

위 코드에서는 먼저 Redis 서버에 연결한 후 get 및 set 메소드를 통해 캐시 읽기 및 쓰기 작업을 수행합니다.

3. OPcache

OPcache는 PHP 버전 5.5.0과 함께 제공되는 바이트코드 캐시 확장으로, PHP 파일의 코드를 메모리에 캐시하여 인터프리터의 실행 속도를 향상시킬 수 있습니다. 바이트코드가 캐시되기 때문에 인터프리터가 PHP 스크립트를 해석하는 데 걸리는 시간을 크게 줄일 수 있습니다. OPcache를 활성화하는 방법은 매우 간단합니다:

  1. php.ini 파일을 수정

php.ini 파일에서 [OPcache]를 찾아 이 확장 기능을 활성화하세요:

; 打开OPcache扩展
zend_extension=opcache.so
[opcache]
; 缓存内存大小
opcache.memory_consumption=128
; 缓存路径
opcache.file_cache=/tmp
; 开启缓存
opcache.enable=1
  1. 코드에서 OPcache 사용
$cacheFilePath = 'cache.txt';
// 判断缓存是否存在且未过期
if(!empty(opcache_get_status()) && @file_exists($cacheFilePath) && (time() - filemtime($cacheFilePath)) < 60) {
  $cache = include $cacheFilePath;
} else {
  // 缓存不存在或已过期,重新获取数据并写入缓存文件
  $data = getData();
  // 将数据进行缓存
  file_put_contents($cacheFilePath, "<?php return " . var_export($data, true) . ';');
  $cache = $data;
}

위 코드에서는 먼저 OPcache가 켜져 있는지 확인한 다음 캐시 파일 존재 여부와 캐시 시간 만료 여부에 따라 캐시에서 데이터를 읽을지 아니면 데이터를 다시 얻을지 결정합니다. 캐시가 존재하지 않거나 만료된 경우 획득한 데이터를 직렬화하여 캐시 파일에 쓴 후, include를 통해 캐시 파일에 있는 데이터를 읽습니다.

4. 요약

위는 몇 가지 일반적인 PHP 캐시 작성 방법입니다. 각 방법에는 고유한 장점과 단점이 있습니다. 개발자는 특정 프로젝트 조건에 따라 적절한 캐싱 솔루션을 선택해야 합니다. 파일 캐싱은 구현하기 쉽지만 비효율적입니다. 메모리 캐싱은 효율성이 높지만 작업이 상대적으로 복잡합니다. OPcache는 PHP 고유의 바이트코드 캐싱 확장입니다. 수동으로 활성화할 필요는 없으며 코드에서 특정 기능만 사용하면 됩니다.

위 내용은 몇 가지 일반적인 PHP 캐시 작성 방법에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.