ge"/> ge">
ホームページ >バックエンド開発 >PHPチュートリアル >PHP キャッシュ アプリケーションの落とし穴
PHP キャッシュの罠
最初にコードの一部を見てください:
/** * 获取设置信息 */ public function getCoinSetting() { $cache = Common::getTair(); $ckey = Common::hashKey("Hello"); $ret = $cache->get($ckey); if ($ret) return json_decode($ret, true); $taomanyiApiService = $this->_getTmiApiService(); $result = $taomanyiApiService->getCoinSetting(); $cache->set($ckey, json_encode($result), 3600); return $result; }
これは、Tair メモリ キャッシュを使用する例です。このコードでは、キャッシュが設定されており、キャッシュ時間は 3600 秒です。 APIからデータを取得するのですが、このように書くとどのような問題が発生するのでしょうか?次の場合:
$result = $taomanyiApiService->getCoinSetting();
$result データは HTTP リクエストから取得されるため、$result で取得されるデータは空です。また、データが異常であることもよくあります。この場合、HTTP リクエストが失敗すると、インターフェース データをリクエストできなくなります。次のプロセスはキャッシュを設定することです
$cache->set($ckey, json_encode($result), 3600);
インターフェイスの HTTP リクエストが失敗したため、誤って空のデータをキャッシュし、キャッシュ時間が 3600 秒だったことがわかります。これはページに表示されます。たとえば、分類にデータのギャップがあり、ビジネス プロセス全体に影響します
次の最適化を行います:
if ($result) $cache->set($ckey, json_encode($result), 3600);