APC
この項では、APCモジュールのインストール・設定と、CodeIgniterからAPCを利用する方法を 解説しています。
APCモジュールのインストール
OSは「CentOS 5.x」、PHPのバージョンは「5.3.x」の環境でのAPCモジュールをインストールする手順です。
# yum -y install php-pear pcre pcre-devel # pecl install apc
APCモジュールの設定
APCモジュールのインストールが完了したら設定ファイル(/etc/php.d/apc.ini)を作成します。
下記はサンプルですので、ご利用のサーバ環境などに合わせて適宜修正してください。
設定ファイル
- /etc/php.d/apc.ini
extension=apc.so apc.cache_by_default = On apc.canonicalize = On apc.coredump_unmap = Off apc.enable_cli = On apc.enabled = On apc.file_md5 = Off apc.file_update_protection = 2 ;apc.filters = apc.gc_ttl = 3600 apc.include_once_override = Off apc.lazy_classes = Off apc.lazy_functions = Off apc.max_file_size = 1M ;apc.mmap_file_mask = apc.num_files_hint = 1000 ;apc.preload_path = apc.report_autofilter = Off apc.rfc1867 = Off apc.rfc1867_freq = 0 apc.rfc1867_name = APC_UPLOAD_PROGRESS apc.rfc1867_prefix = upload_ apc.rfc1867_ttl = 3900 apc.serializer = default apc.shm_segments = 1 apc.shm_size = 1024M apc.slam_defense = On apc.stat = On apc.stat_ctime = Off apc.ttl = 3900 apc.use_request_time = On apc.user_entries_hint = 4096 apc.user_ttl = 3900 apc.write_lock = On
動作確認
- apc.enable_cli = Off
- apc.enable_cli = On
ブラウザから「phpinfo()」 関数の出力結果で確認するか、 コマンドラインから動作確認できます。
コマンドラインから確認する場合は、「apc.enable_cli」の設定値により、 出力結果が異なります。「apc.enable_cli」は、CLI(コマンドライン)からの APC利用を許可するか否かの設定です。
APC Debugging => Disabled
APC Debugging => Disabled
APCドライバのロード
「LOAD」オブジェクトの「driver()」メソッドで、APCドライバをロードします。
第一引数に「cache」を指定し、第二引数には連想配列で、利用したいキャッシュドライバと それが利用できなかった場合の予備のキャッシュドライバを指定します。
$this->load->driver('cache', array('adapter' => 'apc', 'backup' => 'file'));
APCドライバの機能
キャッシュドライバの機能は、主に「キャッシュ情報の取得」、
「キャッシューデータのセット」、
「キャシュデータの削除」の3種類です。
is_supported('apc') 一番上に戻る
指定したキャッシュドライバがシステムで利用できるか確認します。
指定したキャッシュドライバが利用できる場合は「TRUE」、
利用できない場合は「FALSE」を返します。
$this->load->driver('cache', array('adapter' => 'apc')); if ($this->cache->is_supported('apc')) { // APC キャッシングの利用が可能です。 } else { // APC キャッシングは利用できません。 }
cache_info() 一番上に戻る
キャッシング情報を返します。
返すデータはキャッシュドライバによって異なります。
save($key, $val, $ttl) 一番上に戻る
キャッシュしたいデータをセットします。
第一引数には、データを識別する「キー」を指定し、
第二引数には、データを指定します。
第三引数は、データをキャッシュする時間を秒単位で指定することができます。
第三引数を指定しなかった場合のデフォルトは「60」となります。
$id = $this->input->post('id'); if ($my_data = $this->sample_model->get($id)) { $this->cache->save("my_data_{$id}", $my_data, 600); }
get($key) 一番上に戻る
事前にキャッシュしたデータを取得します。
引数には、キャッシュしたデータを識別する「キー」を指定します。
$id = $this->input->post('id'); if (! $my_data = $this->cache->get("my_data_{$id}")) { if ($my_data = $this->sample_model->get($id)) { $this->cache->save("my_data_{$id}", $my_data, 600); } } return $my_data;
get_metadata($key) 一番上に戻る
引数で指定した「キー」のキャッシュデータ情報を返します。
expire | このキャッシュデータが削除される時間 |
mtime | このキャッシュデータがセットされた時間 |
data | キャッシュされたデータ |
$this->cache->save('aaa', 'AAA', 600); echo var_export($this->cache->get_metadata('aaa'), TRUE);
delete($key) 一番上に戻る
引数で指定した「キー」のキャッシュデータをキャッシュから削除します。
if ($this->cache->delete('aaa')) { // キャッシュデータを削除しました。 echo var_export($this->cache->get_metadata('aaa'), TRUE); // false } else { // キャッシュデータの削除に失敗しました。 }
clean() 一番上に戻る
全てのキャッシュデータを削除します。
if ($this->cache->clean()) { // キャッシュデータを削除しました。 } else { // キャッシュデータの削除に失敗しました。 }