PHPでパフォーマンス向上のためのキャッシュテクニック色々
2008年03月03日-
PHP Performance Series: Caching Techniques - Mike Willbanks : getting into the mind of a php developer.
PHPでパフォーマンス向上のためのキャッシュテクニック色々が紹介されていました。
取得に時間のかかるデータはキャッシングで高速化、は当たり前の処理ですが、その方法もいろいろあり、コードが紹介されていたので解説
apc によるキャッシング方法( APCの説明 )
APCはPHPのコードを共有メモリなどに中間形式にキャッシュしておいてPHPの実行速度を上げるための仕組みです。
そのAPCエクステンションを有効にすると、データをキャッシュしておくためのAPIも提供されます。
<?php
if (($config = apc_fetch('config')) === false) {
require('/path/to/includes/config.php');
apc_store('config', $config);
}
apc_fetch, apc_storeを使っていますが、apc_delete というキャッシュを削除するAPIもあります。
apcは、pecl install apc などでインストールできます。
XAMPPの場合は「XAMPPでcurlやopensslなどのPHPエクステンションを有効にする方法」を参考に extension=php_apc.dll を有効にする。
cache_liteによるキャッシング
PEARのCache_Liteを使ったファイルベースでのキャッシュ方法。
<?php
require('/path/to/pear/Cache/Lite/Output.php');
$options = array(
'cacheDir' => '/tmp/',
'lifeTime' => 10
);
$cache = new Cache_Lite_Output($options);
if (!($cache->start($_SERVER['REQUEST_URI']))) {
require('/path/to/bootstrap.php');
$cache->end();
}
PEARのCache_Liteを使うことでファイルベースのキャッシュが超シンプルになります。
Cache_Lite クラスも存在するのですが、ここではCache_Lite_Outputで出力全体をキャッシングしています。
Cache_Liteのサンプルコードは拙著でも紹介しています。
Memcachedによるキャッシング
高負荷なサイトでも多々実績のあるキャッシュデーモンのmemcachedをPHPから使うサンプルです。
別途memcachedデーモンをインストールし、phpのmemcacheエクステンションを有効にする必要があります。
<?php
$post_id = (int) $_GET['post_id'];
$memcached = new Memcache;
$memcached->connect('hostname', 11211);
if (($row = $memcached->get('post_id_' . $post_id)) === false) {
//yes this is safe, we type casted it already ;)
$rs = mysql_query('SELECT * FROM post WHERE post_id = ' . $post_id);
if ($rs && mysql_num_rows($rs) > 0) {
$row = mysql_fetch_assoc($rs);
// cache compressed for 1 hour
$memcached->set('post_id_' . $post_id, $row, MEMCACHE_COMPRESSED, time() + 3600);
}
}
var_dump($row);
memcachedに接続して、データの取得、設定をシンプルにget,setメソッドで行えます。
デーモンを叩くので他の言語のプログラムとキャッシュを共有したい場合にも使えますね。
apcの時同様、memcacheエクステンションは、pecl install memcacheなどでインストールできます。
XAMPPの場合は「XAMPPでcurlやopensslなどのPHPエクステンションを有効にする方法」を参考に extension=php_memcache.dll を有効にする。
関連エントリ
最新のブログ記事(新着順)
- 小説表紙などに使えそうな商用可なフォント「になロマン」
- 筆で書いたようなカナ書体「筆竹仮名B」
- 無料・商用利用可な丸文字ピクセルフォント「マルミーニャM」
- スペースコブラ風フォント
- Next.jsのVercelから商用利用可能なフリー汎用フォント「Geist Font 」
- 無料で使えるいい感じの日本語フォント「しっぽり太ゴシック」
- CSSのみで実装された500種類のローディングアニメーション「CSS Loaders」
- 画像ホバーで様々なエフェクトをかけられる「Izmir」
- CSSのbox-shadowをGUIで生成できる「CSS Box Shadows Generator」
- 好きな画像や文字を埋め込んだQRコードをリアルタイムで作れるWEBツール
- 過去のエントリ