file_get_contents()を使ってRSSから新着情報を読み込むシステムを作成していたのですが、
処理速度に少し問題がありました。
確かに、
アクセスの度にURLの内容をfile_get_contents()で読み込むのは、
あまりいい方法ではないかも。。。
そこで、
以前から気になっていたPEARライブラリのCache_Liteをつかってキャッシュを使用することにしました。
※因みにレンタルサーバーを使用しています。
まず、
http://pear.php.net/package/Cache_Lite/download
からCache_Liteをダウンロードして解凍すると、
ディレクトリの中に「Cache」ディレクトリが入っているので、
それをサーバー上の任意の場所にアップロードします。
※他のディレクトリとファイル(「docs」「tests」「LICENSE」など)は不要です
次に、
任意の場所にキャッシュファイル保存用のディレクトリを作成しておきます。
今回は、「Cache」ディレクトリの中に「tmp」というディレクトリを作成します。
※必ず書き込み権限を与えておいてください。
そして、コードを書いていきます。
//PEARのキャッシュライブラリを読み込み require_once "Cache/Lite.php"; //オプションの設定 $cache_opt = array( "cacheDir" => "Cache/tmp/", //キャッシュファイルの保存場所 "lifeTime" => 3600, //キャッシュ時間 "pearErrorMode" => CACHE_LITE_ERROR_DIE ); //オブジェクトを作成 $cache_obj = new Cache_Lite($cache_opt); $url = "RSSのパスまたはURLを設定"; if($cache_obj->get($cache_id)){ //キャッシュが存在する場合は、キャッシュを取得 $data = $cache_obj->get($cache_id); }else{ $data = file_get_contents($url); //キャッシュが存在しない場合は、キャッシュを保存 $cache_obj->save($data, $cache_id); }
※もちろんPEARライブラリなので、PERA本体も読み込めるようにしておいてください。
これでプログラムを実行させた後に、
「tmp」ディレクトリの中を確認してみてください。
キャッシュファイルが作成されていると思います。
file_get_contents()以外でもcurl()関数などいろいろと組み合わせて使用できるので、
簡単で便利ですが、
リアルタイム性が必要な処理の場合には注意してください。
この記事へのコメントはありません。