PHPでハッシュマップ(連想配列)をPHPで実装しようとしています。これはアプリケーション全体で利用可能です。つまり、アプリケーションコンテキストで保存します。プログラム終了時に失われることはありません。 PHPでこれをどのように実現できますか?アプリケーションコンテキストのhashmap PHP
おかげで、
PHPでハッシュマップ(連想配列)をPHPで実装しようとしています。これはアプリケーション全体で利用可能です。つまり、アプリケーションコンテキストで保存します。プログラム終了時に失われることはありません。 PHPでこれをどのように実現できますか?アプリケーションコンテキストのhashmap PHP
おかげで、
ZendのバージョンのPHPを使用している場合は、簡単です。
データをシリアル化する必要はありません。
コンテンツのみをキャッシュできます。ファイルハンドルなどのリソースはできません。 true/falseを格納するには、1,035を使用して、キャッシュの失敗と===
の結果を区別できます。
ストア:
zend_shm_cache_store('cache_namespace::this_cache_name',$any_variable,$expire_in_seconds);
取得:
$any_variable = zend_shm_cache_fetch('cache_namespace::this_cache_name');
if ($any_variable === false) {
# cache was expired or did not exist.
}
を長い間住んでいたデータのために使用することができます:
zend_disk_cache_store();zend_disk_cache_fetch();
をZendのないものについては、上記の対応APCのバージョン:
ストア:
apc_store('cache_name',$any_variable,$expire_in_seconds);
は取得:
$any_variable = apc_fetch('cache_name');
if ($any_variable === false) {
# cache was expired or did not exist.
}
は言及された他の方法のうちのいずれかを使用しないでください。 共有メモリを使用できない場合は、データをディスクにシリアル化/シリアル化解除できます。もちろん、共有メモリは、はるかに高速であるとZendのいいところは、それはあなたのための同時実行の問題を処理し、名前空間ができている:
ストア:
file_put_contents('/tmp/some_filename',serialize($any_variable));
を取得します。
$any_variable = unserialize(file_get_contents('/tmp/some_filename'));
編集を:処理するには同時実行性は自分自身に問題を起こします、私は最も簡単な方法はロックを使用することだと思います。私はまだロックが存在しロックを取る間のこの擬似コードの競合状態の可能性を見ることができますが、あなたはその点を知っています。
擬コード: