キャッシングドライバ
CodeIgniter は、高速で動的なキャッシングの最も一般的な形式のいくつかをラップした機能を提供します。ファイルベースのキャッシング以外は、特定のサーバー要件が必要です。サーバー要件が満たされていない場合、致命的な例外がスローされます。
使用例
次の例は、コントローラ内での一般的な使用パターンを示しています。
<?php
if (! $foo = cache('foo')) {
echo 'Saving to the cache!<br>';
$foo = 'foobarbaz!';
// Save into the cache for 5 minutes
cache()->save('foo', $foo, 300);
}
echo $foo;
Services クラスを通じてキャッシュエンジンのインスタンスを直接取得できます
<?php
$cache = \Config\Services::cache();
$foo = $cache->get('foo');
キャッシュの設定
キャッシュエンジンのすべての設定は、**app/Config/Cache.php** で行われます。このファイルでは、以下の項目が利用可能です。
$handler
これは、エンジン起動時にプライマリハンドラとして使用されるハンドラの名前です。使用可能な名前は、dummy、file、memcached、redis、predis、wincache です。
$backupHandler
最初の選択肢 $handler
が利用できない場合、これは次にロードされるキャッシュハンドラです。これは、ファイルシステムは常に利用可能であるため、一般的には File
ハンドラですが、より複雑なマルチサーバー設定には適さない場合があります。
$prefix
同じキャッシュストレージを使用するアプリケーションが複数ある場合、すべてのキー名の前に付加されるカスタムプレフィックス文字列をここに追加できます。
$ttl
何も指定されていない場合にアイテムを保存するデフォルトの秒数です。
警告: これは、60 秒がハードコードされているフレームワークハンドラでは使用されませんが、プロジェクトやモジュールには役立つ場合があります。これは、将来のリリースでハードコードされた値に置き換えられます。
$file
これは、File
ハンドラに固有の設定の配列であり、キャッシュファイルをどのように保存するかを決定します。
$memcached
これは、Memcache(d)
ハンドラを使用する場合に使用されるサーバーの配列です。
$redis
Redis
および Predis
ハンドラを使用する場合に使用したい Redis サーバーの設定です。
コマンドラインツール
CodeIgniter には、コマンドラインからキャッシュの操作に役立ついくつかの コマンド が付属しています。これらのツールはキャッシュドライバを使用するために必須ではありませんが、役立つ場合があります。
cache:clear
現在のシステムキャッシュをクリアします
php spark cache:clear
cache:info
現在のシステムのファイルキャッシュ情報を表示します
php spark cache:info
注記
このコマンドは、ファイルキャッシュハンドラのみをサポートします。
クラスリファレンス
- class CodeIgniter\Cache\CacheInterface
- isSupported()
- 戻り値:
サポートされている場合は
true
、サポートされていない場合はfalse
- 戻り値の型:
bool
- get($key) mixed
- パラメータ:
**$key** (
string
) – キャッシュアイテム名
- 戻り値:
アイテムの値、見つからない場合は
null
- 戻り値の型:
mixed
このメソッドは、キャッシュストアからアイテムを取得しようとします。アイテムが存在しない場合、メソッドは null を返します。
例
<?php $foo = $cache->get('my_cached_item');
- remember(string $key, int $ttl, Closure $callback)
- パラメータ:
**$key** (
string
) – キャッシュアイテム名**$ttl** (
int
) – 有効期限(秒)**$callback** (
Closure
) – キャッシュアイテムが null を返した場合に呼び出すコールバック
- 戻り値:
キャッシュアイテムの値
- 戻り値の型:
mixed
キャッシュからアイテムを取得します。
null
が返された場合、これはコールバックを呼び出し、結果を保存します。いずれの場合も、これは値を返します。
- save(string $key, $data[, int $ttl = 60[, $raw = false]])
- パラメータ:
**$key** (
string
) – キャッシュアイテム名$data (
mixed
) – 保存するデータ$ttl (
int
) – Time To Live(生存時間)、秒単位(デフォルトは60)$raw (
bool
) – 生の値を保存するかどうか
- 戻り値:
成功時は
true
、失敗時はfalse
- 戻り値の型:
bool
このメソッドは、アイテムをキャッシュストアに保存します。保存に失敗した場合、メソッドは
false
を返します。例
<?php $cache->save('cache_item_id', 'data_to_cache');
注記
$raw
パラメータは、increment()
とdecrement()
の使用を許可するために、Memcache によってのみ利用されます。
- delete($key) bool
- パラメータ:
$key (
string
) – キャッシュされたアイテムの名前
- 戻り値:
成功時は
true
、失敗時はfalse
- 戻り値の型:
bool
このメソッドは、キャッシュストアから特定のアイテムを削除します。アイテムの削除に失敗した場合、メソッドは false を返します。
例
<?php $cache->delete('cache_item_id');
- deleteMatching($pattern) integer
- パラメータ:
$pattern (
string
) – キャッシュされたアイテムのキーに一致させるglobスタイルのパターン
- 戻り値:
削除されたアイテムの数
- 戻り値の型:
整数
このメソッドは、globスタイルのパターンに対してキーを照合することにより、キャッシュストアから複数のアイテムを一度に削除します。削除されたアイテムの総数を返します。
重要
このメソッドは、File、Redis、およびPredisハンドラーに対してのみ実装されています。制限により、MemcachedおよびWincacheハンドラーには実装できませんでした。
例
<?php $cache->deleteMatching('prefix_*'); // deletes all items of which keys start with "prefix_" $cache->deleteMatching('*_suffix'); // deletes all items of which keys end with "_suffix"
globスタイルの構文の詳細については、Glob (programming) を参照ください。
- increment($key[, $offset = 1]) mixed
- パラメータ:
$key (
string
) – キャッシュID$offset (
int
) – 加算するステップ/値
- 戻り値:
成功時は新しい値、失敗時は
false
- 戻り値の型:
mixed
生の保存値のアトミックなインクリメントを実行します。
例
<?php // 'iterator' has a value of 2 $cache->increment('iterator'); // 'iterator' is now 3 $cache->increment('iterator', 3); // 'iterator' is now 6
- decrement($key[, $offset = 1]) mixed
- パラメータ:
$key (
string
) – キャッシュID$offset (
int
) – 減らすステップ/値
- 戻り値:
成功時は新しい値、失敗時は
false
- 戻り値の型:
mixed
生の保存値のアトミックなデクリメントを実行します。
例
<?php // 'iterator' has a value of 6 $cache->decrement('iterator'); // 'iterator' is now 5 $cache->decrement('iterator', 2); // 'iterator' is now 3
- clean()
- 戻り値:
成功時は
true
、失敗時はfalse
- 戻り値の型:
bool
このメソッドは、キャッシュ全体を「クリーン」します。キャッシュファイルの削除に失敗した場合、メソッドはfalseを返します。
例
<?php $cache->clean();
- getCacheInfo()
- 戻り値:
キャッシュデータベース全体に関する情報
- 戻り値の型:
mixed
このメソッドは、キャッシュ全体に関する情報を返します。
例
<?php var_dump($cache->getCacheInfo());
注記
返される情報とデータの構造は、使用されているアダプターによって異なります。
- getMetadata(string $key)
- パラメータ:
**$key** (
string
) – キャッシュアイテム名
- 戻り値:
キャッシュされたアイテムのメタデータ。存在しないアイテムの場合は
null
、または少なくとも絶対エポック有効期限の「expire」キーを持つ配列(期限切れにならない場合はnull
)。- 戻り値の型:
配列|null
このメソッドは、キャッシュ内の特定のアイテムに関する詳細情報を返します。
例
<?php var_dump($cache->getMetadata('my_cached_item'));
注記
返される情報とデータの構造は、使用されているアダプターによって異なります。一部のアダプター(File、Memcached、Wincache)は、存在しないアイテムに対して
false
を返します。
- static validateKey(string $key, string $prefix)
- パラメータ:
$key (
string
) – 潜在的なキャッシュキー$prefix (
string
) – オプションのプレフィックス
- 戻り値:
検証済みおよびプレフィックス付きのキー。キーがドライバーの最大キー長を超える場合、ハッシュされます。
- 戻り値の型:
文字列
このメソッドは、ハンドラーメソッドによってキーが有効かどうかを確認するために使用されます。文字列以外、無効な文字、および長さゼロの場合、
InvalidArgumentException
をスローします。例
<?php use CodeIgniter\Cache\Handlers\BaseHandler; $prefixedKey = BaseHandler::validateKey($key, $prefix);
ドライバー
ファイルベースのキャッシュ
出力クラスからのキャッシュとは異なり、ドライバーのファイルベースのキャッシュでは、ビューファイルの一部をキャッシュできます。ディスクI/Oがキャッシュによる正の効果を無効にする可能性があるため、注意して使用し、アプリケーションをベンチマークしてください。これは、アプリケーションがキャッシュディレクトリに実際に書き込みできる必要があります。
Memcached キャッシュ
Memcachedサーバーは、キャッシュ構成ファイルで指定できます。利用可能なオプションは次のとおりです。
<?php
namespace Config;
use CodeIgniter\Config\BaseConfig;
class Cache extends BaseConfig
{
// ...
public $memcached = [
'host' => '127.0.0.1',
'port' => 11211,
'weight' => 1,
'raw' => false,
];
// ...
}
Memcachedの詳細については、https://www.php.net/memcached を参照ください。
WinCache キャッシュ
Windowsでは、WinCacheドライバーも利用できます。
WinCacheの詳細については、https://www.php.net/wincache を参照ください。
Redis キャッシュ
Redisは、LRUキャッシュモードで動作できるインメモリキーバリューストアです。使用するには、Redisサーバーとphpredis PHP拡張機能 が必要です。
redisサーバーに接続するための設定オプションは、キャッシュ構成ファイルに保存されています。利用可能なオプションは次のとおりです。
<?php
namespace Config;
use CodeIgniter\Config\BaseConfig;
class Cache extends BaseConfig
{
// ...
public $redis = [
'host' => '127.0.0.1',
'password' => null,
'port' => 6379,
'timeout' => 0,
'database' => 0,
];
// ...
}
Redisの詳細については、https://redis.io を参照ください。
Predis キャッシュ
Predisは、Redisキーバリューストアのための柔軟で機能豊富なPHPクライアントライブラリです。使用するには、プロジェクトルート内でコマンドラインから以下を実行します。
composer require predis/predis
Redisの詳細については、https://github.com/nrk/predis を参照ください。
ダミーキャッシュ
これは、常に「ミス」するキャッシュバックエンドです。データは保存されませんが、選択したキャッシュをサポートしていない環境でキャッシュコードをそのままにしておくことができます。