PHP キャッシュ テクノロジと PHP キャッシュ実装コードの詳細な紹介_PHP チュートリアル
一部の情報 (多くは一定ですが変更される可能性がある情報) は、表示を高速化するためにキャッシュに保存されます。これは、一般に、サーバーに保存される共有情報であると考えられています。生と死と同様に、キャッシュを保存するときに次の更新時間を指定できます。たとえば、5 分ごとに更新する必要があります
データ キャッシュ: ここで言うデータ キャッシュはデータベース クエリを指します。 PHP のキャッシュ機構は、ページにアクセスされるたびに、まず対応するキャッシュ データが存在するかどうかを検出し、存在しない場合はデータベースに接続してデータを取得し、クエリ結果をシリアル化して保存します。将来的には、同じクエリ結果がキャッシュ テーブルまたはファイルから直接取得されるようになります。
最も広く使用されている例は、結果 ID をテーブルにキャッシュし、次回同じキーワードを検索するときに最初にキャッシュ テーブルを検索する Discuz の検索機能です。
一般的な方法として、複数のテーブルが関連付けられている場合、配列を生成し、添付されたテーブルの内容をメインテーブルのフィールドに保存します。これには、1 つのテーブルのみを読み取るという利点があります。データを同期するには、さらに多くの手順が必要になります。この場合、データベースが常にボトルネックになります。
ページキャッシュ:
ページにアクセスするたびに、対応するキャッシュされたページファイルが存在するかどうかが最初に検出され、存在しない場合はデータベースに接続し、データを取得してページを表示し、キャッシュされたページファイルを生成します。同時に、次回アクセスするときにページ ファイルが活躍するようになります。 (インターネット上のテンプレート エンジンと一部の一般的な PHP キャッシュ メカニズム クラスには、通常この機能があります)
時間トリガー キャッシュ:
ファイルが存在するかどうか、およびタイムスタンプが設定された有効期限よりも小さいかどうかを確認します (ファイル変更のタイムスタンプがある場合)。有効期限のタイムスタンプが大きい場合はキャッシュを使用し、それ以外の場合はキャッシュを更新します。
コンテンツトリガーキャッシュ:
データが挿入または更新されたときに、PHP キャッシュメカニズムを強制的に更新します。
静的キャッシュ:
ここで言う静的キャッシュとは、HTMLやXMLなどのテキストファイルを直接生成し、更新があった場合に再生成する静的キャッシュを指します。あまり変更のないページに適しているので、勝ちました。ここではそれについて話さないでください。
上記のコンテンツはコードレベルのソリューションであり、他のフレームワークを直接CPするため、変更するのが面倒ですが、次のコンテンツはサーバーです。非コード レベルのキャッシュ ソリューション。これを実現するには複数の関係者の協力が必要です
メモリ キャッシュ:
Memcached は、データベースの負荷を軽減し、アクセスを向上させるために使用される、高性能の分散メモリ オブジェクト PHP キャッシュ メカニズム システムです。動的アプリケーションの速度を向上させます。
PHP バッファ:
eaccelerator、apc、phpa、xcache があります。これらについては説明しませんが、これを知っていれば問題ありません
MYSQL キャッシュ:
これは非コードレベルと考えられます。クラシックデータベースはこの方法を使用します。以下の実行時間を見てください。0.09xxx など
青いやつに従って変更された my.ini のセクションを投稿します。2G MYISAM テーブル付近である可能性があります。 0.05Sを1年近く変えているそうです
リバースプロキシベースのWebキャッシュ:
Nginx、SQUID、mod_proxyなど(apache2以降はmod_proxyとmod_cacheに分かれています)
NGINXの例
使用法 Google がいくつかの PHP キャッシュ技術メソッドを見つけました
APC とファイル キャッシュを実装する PHP キャッシュ実装を送ってください Cache_Abstract を継承することで、サードパーティのキャッシュ ツールを呼び出すことができます。
shindigのキャッシュクラスとapcを参照してください。
Phpコード
复制代 | /** * キャッシュ抽象クラス */ abstract class Cache_Abstract { /* * * キャッシュ変数の読み取り */ 抽象公開関数フェッチ($key); /** * キャッシュ変数*/ 抽象パブリック関数ストア($key, $value); /** * キャッシュ変数の削除 */ 抽象パブリック関数 delete($key); /** *すべてのキャッシュをクリア(削除)します*/ 抽象パブリック関数clear(); /**存 * キャッシュ変数をロックします * @param String $ キーキャッシュ入札 * @Returncache_abstract */ 抽象公開関数ロック($key); /**解 * キャッシュ変数のロック解除 * @param String $ key Bidding * @Returncache_abstract */ 抽象パブリック関数unlock($key); /** *キャッシュ変数がロックされているかどうかを取得する*/ 抽象パブリック関数 isLocked($key); /** * * ロックされていないことを確認してください * ロック解除を待機するために最大 $tries 回スリープし、タイムアウトになったらスキップしてロックを解除します */ public function checkLock($key) { if (!$this->isLocked($key)) { return $this; } $tries = 10; $count = 0; do { usleep(200); $count ++; } while ($count isLocked($key)); // 最做十次睡眠等待機解锁,超時間则跳过并解锁 $this->isLocked($key) && $this->unlock($key); $this を返します。 } } /** * APC 拡張キャッシュの実装 * * * @category Mjie * @package Cache * @author Liu Shui Meng Chun * @copyright Copyright (c) 2008- * @version $Id: Cache/Apc.php バージョン番号 2010-04-18 23:02 cmpan $ */ class Cache_Apc extends Cache_Abstract { protected $_prefix = 'cache.mjie.net'; public function __construct() { if (!function_exists('apc_cache_info')) { throw new CacheException('apc拡張機能がインストールされていません'); } } /** *使用する 使用する 使用する 使用する 使用する 使用する アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト*/ public function store($key, $value) { return apc_store($this->_storageKey($key), $value); } /** */ public function fetch($key) { return apc_fetch($this->_storageKey($key)); } /** * キャッシュのクリア*/ パブリック関数clear() { apc_clear_cache(); $this を返します。 } /** */ public function delete($key) { apc_delete($this->_storageKey($key)); $this を返します。 } /** */ public function isLocked($key) { if ((apc_fetch($this->_storageKey($key) . '.lock')) === false) { false を返します。 } trueを返します。 } /** * 锁定缓存单元 * * @param string $key * @return Cache_Apc */ public function lock($key) { apc_store($this->_storageKey($key) . '.lock', '', 5); $this を返します。 } /** */ public functionunlock($key) { apc_delete($this->_storageKey($key) . '.lock'); $this を返します。 } /** * 完全なキャッシュ名 **/ private function _storageKey($key) { return $this->_prefix . '_' 。 $キー; } } /** * ファイルキャッシュの実装 * * * @category Mjie * @package Cache * @author Liu Shui Meng Chun * @copyright Copyright (c) 2008- * @ライセンス 新しい BSD ライセンス * @version $Id: Cache/File.php バージョン番号 2010-04-18 16:46 cmpan $ */ class Cache_File extends Cache_Abstract { public $useSubdir = false; protected $_cachesDir = 'キャッシュ'; パブリック関数 __construct() { if (define('DATA_DIR')) { $this->_setCacheDir(DATA_DIR . '/cache'); } } /** */ protected function _getCacheFile($key) { $subdir = $this->useSubdir ? substr($key, 0, 2) 。 '/' : ''; $this->_cachesDir を返します。 '/' 。 $サブディレクトリ 。 $key 。 '.php'; } /** 混合 */ public function fetch($key) { $cacheFile = self::_getCacheFile($key); if (file_exists($cacheFile) && is_readable($cacheFile)) { // include 方式 // return include $cacheFile; // 系列化方式 return unserialize(@file_get_contents($cacheFile, false, NULL, 13)); } falseを返します。 } /** * キャッシュ変数 * 情報漏洩を防ぐため、キャッシュファイルの形式は「」で始まるphpファイルです キャッシュ変数の添字 $value 値キャッシュ変数の * @return bool */ パブリック関数store($key, $value) { $cacheFile = self::_getCacheFile($key); $cacheDir = dirname($cacheFile); if(!is_dir($cacheDir)) { if(!@mkdir($cacheDir, 0755, true)) { throw new CacheException("キャッシュディレクトリを作成できませんでした"); } } // include方式 //return @file_put_contents($cacheFile, ' return @file_put_contents($cacheFile, '' .serialize($value)); } /** */ public function delete($key) { if(emptyempty($key)) { throw new CacheException("Cache_File::delete() の引数 1 がありません" ); } $cacheFile = self::_getCacheFile($key); if(!@unlink($cacheFile)) { throw new CacheException("キャッシュ ファイルを削除できませんでした"); } $this を返します。 } /** */ パブリック関数 isLocked($key) { $cacheFile = self::_getCacheFile($key); clearstatcache(); return file_exists($cacheFile . '.lock'); } /** * 锁定 * * @param string $key * @return Cache_File */ public function lock($key) { $cacheFile = self::_getCacheFile($key); $cacheDir = dirname($cacheFile); if(!is_dir($cacheDir)) { if(!@mkdir($cacheDir, 0755, true)) { if(!is_dir($cacheDir)) { throw new CacheException("キャッシュ ディレクトリを作成できませんでした" ); }{/ ** * 解锁 * * @param string $key * @return Cache_File */ public functionunlock($key) { $cacheFile = self::_getCacheFile($key); @unlink($cacheFile . '.lock'); return http://www.bkjia.com/PHPjc/444684.html |
http://www.bkjia.com/PHPjc/444684.html

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









PHP 8.4 では、いくつかの新機能、セキュリティの改善、パフォーマンスの改善が行われ、かなりの量の機能の非推奨と削除が行われています。 このガイドでは、Ubuntu、Debian、またはその派生版に PHP 8.4 をインストールする方法、または PHP 8.4 にアップグレードする方法について説明します。

Visual Studio Code (VS Code とも呼ばれる) は、すべての主要なオペレーティング システムで利用できる無料のソース コード エディター (統合開発環境 (IDE)) です。 多くのプログラミング言語の拡張機能の大規模なコレクションを備えた VS Code は、

このチュートリアルでは、PHPを使用してXMLドキュメントを効率的に処理する方法を示しています。 XML(拡張可能なマークアップ言語)は、人間の読みやすさとマシン解析の両方に合わせて設計された多用途のテキストベースのマークアップ言語です。一般的にデータストレージに使用されます

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用してPHPの特定の文字列内の母音の数を計算する方法を学びます。英語の母音は、a、e、i、o、u、そしてそれらは大文字または小文字である可能性があります。 母音とは何ですか? 母音は、特定の発音を表すアルファベットのある文字です。大文字と小文字など、英語には5つの母音があります。 a、e、i、o、u 例1 入力:string = "tutorialspoint" 出力:6 説明する 文字列「TutorialSpoint」の母音は、u、o、i、a、o、iです。合計で6元があります

あなたが経験豊富な PHP 開発者であれば、すでにそこにいて、すでにそれを行っていると感じているかもしれません。あなたは、運用を達成するために、かなりの数のアプリケーションを開発し、数百万行のコードをデバッグし、大量のスクリプトを微調整してきました。

JWTは、JSONに基づくオープン標準であり、主にアイデンティティ認証と情報交換のために、当事者間で情報を安全に送信するために使用されます。 1。JWTは、ヘッダー、ペイロード、署名の3つの部分で構成されています。 2。JWTの実用的な原則には、JWTの生成、JWTの検証、ペイロードの解析という3つのステップが含まれます。 3. PHPでの認証にJWTを使用する場合、JWTを生成および検証でき、ユーザーの役割と許可情報を高度な使用に含めることができます。 4.一般的なエラーには、署名検証障害、トークンの有効期限、およびペイロードが大きくなります。デバッグスキルには、デバッグツールの使用とロギングが含まれます。 5.パフォーマンスの最適化とベストプラクティスには、適切な署名アルゴリズムの使用、有効期間を合理的に設定することが含まれます。

静的結合(静的::) PHPで後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

この記事では、通貨サークルのトップ10の主要な交換アプリケーションを要約し、その利点と機能を強調しています。これらの交換には、Binance、Huobi、Okx、Binance USA、Coinbase、Kraken、Bitfinex、Kucoin、Gate.io、Crypto.comが含まれます。彼らは、さまざまな投資家に対応する幅広い取引ペア、取引ツール、セキュリティ機能を提供しています。
