PHP でのキャッシュに静的変数を使用する (ヒント)
?? 最近、顧客用にインポート機能を作成しました。インポート後に、メディアの一部のデータを検索して顧客のフィールドに更新する必要があります。インポートされた顧客のメディアに基づいています。
?? テストが完了すると、インポート機能に問題はなく、すぐに納品されました。原因を確認したところ、それが原因であることがわかりました。 SQL ステートメントの実行時間は非常に短いですが、大量のデータがインポートされるため、毎回実行する必要があり、時間が長くなります。
?? 開発者は、その理由を一目で理解した解決策を思いつきました。では、この問題を分析した結果、次のことがわかりました。 >
?? 1. インポートされた顧客は膨大ですが、顧客のメディアの多くは繰り返し実行され、多くの SQL ステートメントが繰り返し実行されます。???2. メディア情報が更新されるため、今回のアクセスで同じメディアから取得したデータは同一であると判断できるため、このキャッシュの有効時間は接続時間のみとなります。
?? 3. キャッシュ速度はできるだけ高速である必要があります。ご存知のとおり、キャッシュごとに速度は異なります (ローカル メモリ > memcache > ディスク キャッシュ)。
??? これら 3 つの機能は静的変数を使用してキャッシュできます。コードの基本的な形式は次のとおりです:
???
function updateFirstEndFromBatchtasks(...){ static $cache=array(); $val=$$cache[$key]; if(is_null($val)){ $val=.....//获取$val的值 $cache[$key]=$val; } }
静的変数を使用してキャッシュを実装することの利点と欠点について話しましょう:
?? 利点:
?? 高速、効率的、簡単に実装できます。 PHP の内部変数であるため、すべてのキャッシュの中で最も効率的です。
?? 欠点:
?? 柔軟性が低く、この接続でのみ有効で、実行領域が小さく、同じ関数内でのみ有効で、関数間で動作できません (代わりにグローバル変数を使用できます)。
?? 静的変数はキャッシュに非常に便利で、多くのリソースを消費せず、データベースにクエリを実行する場合、1 つの接続で複数回実行する可能性があります。効果は限定的かもしれないが。