ge"/> ge">

ホームページ  >  記事  >  バックエンド開発  >  PHP キャッシュ アプリケーションの落とし穴

PHP キャッシュ アプリケーションの落とし穴

WBOY
WBOYオリジナル
2016-06-13 13:23:33847ブラウズ

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); 


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。