【さくら】pearのCache_Liteでキャッシュする

この記事について

環境さくらレンタルサーバー + PEAR Cache_Lite
目的ページをキャッシュして高速化する
結果参考ページのサンプルほぼそのままで動いた

つまずきポイント要約

  • さくらの /tmp は他ユーザーと共有なのでホームディレクトリ以下に保存するほうがいい
  • cacheDir のフォルダは事前に作っておく必要がある

PEAR ライブラリの Cache_Lite でキャッシュする方法
サンプルスクリプトも含めてこのページがわかりやすかった

サンプルスクリプトもほぼそのまま

<?php 

  // クラス読み込み
  require_once('Cache/Lite.php');

  // IDのセット
  //$cache_id = $_SERVER["REQUEST_URI"]; //こんなんでもいい
  $cache_id = '123456';
  // オプション
  $options = array(
//さくらの場合、/tmp/はホームディレクトリより上にあるがキャッシュは保存できる。ただ他ユーザーと共有なのでホームディレクトリ以下に保存するほうがいいと思う
//    'cacheDir'                => '/tmp/', //キャッシュ保存先
      'cacheDir'                => '/home/acount_name/tmp/', //共有サーバーなのでホームディレクトリ以下。フォルダは作って事前に作る必要がある
      'caching'                 => 'true',  // キャッシュを有効に
      'automaticSerialization'  => 'true',  // 配列を保存可能に
      'lifeTime'                => 10,      // 10(生存時間:10秒)
      'automaticCleaningFactor' => 200,     // 自動で古いファイルを削除(1/200の確率で実行)
      'hashedDirectoryLevel'    => 1,       // ディレクトリ階層の深さ(高速になる)
  );

  // オブジェクトのnew
  $cache = new Cache_Lite($options); 

  // キャッシュデータがあるかどうかの判別
  if ( $cache_data = $cache->get($cache_id) )
  {
      echo "【キャッシュ使用】<br>";
      $buff = $cache_data;
  }
  else
  {
      // キャッシュデータがない。APIからデータを読み込む処理
      // データ取得処理ここから
      // ……………………… $read_data にデータを入れておく
      $read_data = date('Y/m/d H:i:s');
      // データ取得処理ここまで
      
      echo "【キャッシュ未使用】<br>";
      $buff = $read_data;
      //$cache->save($buff); ← $cache_id は省略できる?(明示したほうが安心)
      $cache->save($buff,$cache_id); //キャッシュを保存
  }
  print_r($buff);
?>

php8 環境での Cache_Lite 導入はこちら

タイトルとURLをコピーしました