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 を有効にする。
関連エントリ
最新のブログ記事(新着順)
- 約7500種の汎用ピクトグラムアイコン集「Phosphor Icons」
- ほぼCSSで実装されたUIフレームワーク「Ellegant CSS」
- TailwindCSSベースの150種類以上のUIライブラリ「SailboatUI」
- 1700種類以上のSVGアイコン「MingCute Icon」
- 2000種類以上の汎用ピクトグラムアイコン集「Atlas Icons」
- かわいい手書き風フォント「うさぎとまんげつのサンセリフ」
- ランディングページのサンプル集「Landings」
- WEBのUIコンポーネントギャラリー「The Component Gallery」
- 汎用で使える700+のピクトグラムアイコン「Sargam Icons」
- 白黒写真をWEB上で簡単にカラーにできる「Palette」
- 過去のエントリ