PHP の APC キャッシュの詳細な紹介 (学習と構成)_PHP チュートリアル
1. APC キャッシュの概要
APC、正式名称はAlternative PHP Cache、正式訳は「Optional PHP Cache」と呼ばれます。これは、PHP の中間コードをキャッシュして最適化するためのフレームワークを提供します。 APC のキャッシュは、システム キャッシュとユーザー データ キャッシュの 2 つの部分に分かれています。
システムキャッシュ
これは、APC が PHP ファイルのソース コードのコンパイル結果をキャッシュし、呼び出されるたびにタイムスタンプを比較することを意味します。有効期限が切れていない場合は、キャッシュされた中間コードが実行に使用されます。デフォルトのキャッシュ
3600 秒 (1 時間)。しかし、それでもかなりの CPU 時間を浪費します。したがって、php.ini でシステム キャッシュを期限切れにしないように設定できます (apc.ttl=0)。ただし、このように設定した場合、PHP コードを変更した後に WEB サーバーを再起動する必要があります。現在、このタイプのキャッシュが一般的に使用されています。
ユーザーデータキャッシュ
キャッシュは、ユーザーが PHP コードを記述するときに apc_store 関数と apc_fetch 関数を使用して読み書きします。データ量がそれほど多くない場合は、試してみてください。データ量が大きい場合は、memcache のような、より特化したメモリ キャッシュ ソリューションを使用することをお勧めします
キャッシュキー生成ルール
APC キャッシュの各スロットにはキーがあり、そのキーは
apc_cache_key_t 構造体タイプは、キー関連の属性に加えて、h フィールドの生成もキーとなります。 h フィールドは、この要素がスロット配列内のどこに位置するかを決定します。ユーザーキャッシュとシステムキャッシュでは生成ルールが異なります。 ユーザー キャッシュは、apc_cache_make_user_key 関数を通じてキーを生成します。ユーザーによって渡されたキー文字列は、PHP カーネルのハッシュ関数 (PHP のハッシュテーブルで使用されるハッシュ関数: zend_inline_hash_func) に基づいて h 値を生成します。
システム キャッシュは、apc_cache_make_file_key 関数を通じてキーを生成します。 APC 設定項目 apc.stat のスイッチを介して、異なるソリューションを異なる方法で処理できます。オープンの場合、それは
apc.stat= On の場合、コンパイルされたコンテンツは更新されると自動的に再コンパイルされ、キャッシュされます。このときのhの値は、ファイルのdeviceとinodeを足した値になります。シャットダウンの場合、つまり apc.stat=off の場合、ファイルが変更されたときに、更新された内容を有効にするには、Web サーバーを再起動する必要があります。このとき、h値はファイルのパスアドレスに基づいて生成され、ここでのパスは絶対パスとなる。相対パスを使用する場合でも、PG (include_path) ロケーション ファイルを検索して絶対パスを取得するため、絶対パスを使用するとチェックが省略され、コードの効率が向上します。
キャッシュプロセスを追加
ユーザー キャッシュを例に挙げると、apc_add 関数を使用してコンテンツを APC キャッシュに追加します。キー パラメーターが文字列の場合、APC はその文字列に基づいてキーを生成します。キー パラメーターが配列の場合、APC は配列全体を走査してキーを生成します。これらのキーに基づいて、APC は _apc_store を呼び出して値をキャッシュに保存します。これはユーザー キャッシュであるため、現在使用されているキャッシュは apc_user_cache です。書き込み操作を実行するのは apc_cache_make_user_entry 関数であり、最終的に apc_cache_user_insert を呼び出してトラバーサル クエリと書き込み操作を実行します。同様に、システム キャッシュは apc_cache_insert を使用して書き込み操作を実行し、最終的に _apc_cache_insert を呼び出します。
ユーザー キャッシュでもシステム キャッシュでも、一般的な実行プロセスは次のとおりです。
スロット配列内の位置を見つけた後、現在のキーに対応するスロットのリンクされたリストを調べます。書き込まれるキーと一致するスロット キーがある場合、またはスロットの有効期限が切れた場合は、現在のスロットをクリアします。
最後のスロットの後に新しいスロットを挿入します。
2.APCモジュールのインストール
ウィンドウズ
ステップ 1: http://pecl.php.net/package/apc で php_apc.dll をダウンロードし、PHP のバージョンと一致させるために、php_apc.dll を ext ディレクトリに置きます
拡張子=php_apc.dll
apc.rfc1867 = オン
apc.max_file_size = 100M
upload_max_filesize = 100M
post_max_size = 100M
//上記のパラメータは自分で定義できます
ステップ 3: PHP APC がサポートされているかどうかを確認する apc_store apc_fetch PHP APC 設定パラメーター 関連する設定をまとめて説明します。
apc.enabled=1 apc.enabled のデフォルト値は 1 ですが、0 に設定すると APC を無効にできます。 0 に設定する場合は、extension=apc.so もコメントアウトします (これによりメモリ リソースを節約できます)。 APC 機能が有効になると、オペコードは共有メモリにキャッシュされます。
apc.shm_segments = 1
概要 1. 最高のパフォーマンスを達成するには、Spinlocks ロック メカニズムを使用します。
2. APC は、APC キャッシュを監視および管理するための apc.php を提供します。管理者名とパスワードを忘れずに変更してください
3. APC はデフォルトで mmap 匿名マッピングを通じて共有メモリを作成し、キャッシュ オブジェクトはこの「大きな」メモリ空間に保存されます。共有メモリはAPC自体によって管理されます
4. 統計を通じて、apc.shm_size、apc.num_files_hints、および apc.user_entries_hint の値を調整する必要があります。最高になるまで
5、わかりました、apc.stat = 0 の方がパフォーマンスが向上することは認めます。あなたの望むものなら何でも受け入れます
6、PHP の事前定義定数、apc_define_constants() 関数を使用できます。ただし、APC 開発者によると、pecl Hidef の方がパフォーマンスが優れており、例外定義をスローするだけなので非効率的です。
7、関数 apc_store()、システム設定などの PHP 変数の場合、ライフサイクルはアプリケーション全体 (httpd デーモンから httpd デーモンが終了するまで) であるため、Memcached よりも APC を使用する方が適切です。結局のところ、ネットワーク伝送プロトコル tcp は使用しないでください。
8. APC は、関数 apc_store() を使用して頻繁に変更されるユーザー データをキャッシュするのには適しておらず、いくつかの奇妙な現象が発生します。
リューン
wget http://pecl.php.net/get/APC-3.1.8.tgz
tar -zxvf APC-3.1.8.tgz cd APC-3.1.8
/usr/local/php/bin/phpize
./configure --enable-apc --enable-mmap --enable-apc-spinlocks --disable-apc-pthreadmutex --with-php-config=/usr/local/php/bin/php-config
作る
sudo make install
/usr/local/php/etc/php.ini を追加します
拡張子 = "apc.so" ;
;APC設定
apc.enabled = 1
apc.shm_segments = 1
apc.shm_size = 64M
apc.optimization = 1
apc.num_files_hint = 0
apc.ttl = 0
apc.gc_ttl = 3600
apc.cache_by_default = オン
Apache または /usr/local/php/sbin/php-fpm を再起動します
phpinfo apcを表示
以下は、www.initphp.com フレームワークの APC キャッシュ クラスを指します
initphpフレームワークのAPCキャッシュクラス
[php]
if (!define('IS_INITPHP')) exit('アクセスが拒否されました!');
/*************************************************** * *********************************
※InitPHP 2.0の国産PHP開発フレームワークDao-APCキャッシュは、頻繁に書き込まれるキャッシュデータには適していません
*------------------------------------------------ - ---------------------------------
* 著作権: CopyRight By initphp.com
※このソースコードはご自由にお使いいただけますが、ご使用の際は作者情報を保管しておいてください。他人の労働の成果を尊重することは、自分自身を尊重することになります
*------------------------------------------------ - ---------------------------------
* $作者:zhuli
* $Dtime:2011-10-09
************************************************* * *********************************/
クラス apcInit {
/**
* APC キャッシュセットキャッシュ
*キャッシュキー、値、キャッシュ時間を設定します
* @param 文字列 $key KEY 値
* @param string $value value
* @param string $time キャッシュ時間
*/
パブリック関数 set_cache($key, $value, $time = 0) {
If ($time == 0) $time = null // null の場合は永続的にキャッシュします
return apc_store($key, $value, $time);;
}
/**
* Apc キャッシュ - キャッシュを取得します
* KEYを通じてキャッシュデータを取得します
* @param 文字列 $key KEY 値
*/
パブリック関数 get_cache($key) {
戻り apc_fetch($key);
}
/**
* APC キャッシュ - キャッシュをクリアします
* memcache からキャッシュを削除します
* @param 文字列 $key KEY 値
*/
パブリック関数 Clear($key) {
戻り apc_delete($key);
}
/**
* APC キャッシュ - すべてのキャッシュをクリア
※この機能の使用は非推奨です
* @return
*/
パブリック関数 clear_all() {
apc_clear_cache('user') // ユーザーのキャッシュをクリアします
;
return apc_clear_cache() // キャッシュをクリアします
;
}
/**
* APCキャッシュが存在するか確認してください
* @param 文字列 $key KEY 値
*/
パブリック関数が存在します($key) {
戻り apc_exists($key);
}
/**
* フィールドの自動インクリメント - カウントに使用されます
* @param 文字列 $key KEY 値
* @param int $step 新しいステップ値
*/
パブリック関数 inc($key, $step) {
return apc_inc($key, (int) $step);
}
/**
* フィールドのデクリメント - カウントに使用されます
* @param 文字列 $key KEY 値
* @param int $step 新しいステップ値
*/
パブリック関数 dec($key, $step) {
return apc_dec($key, (int) $step);
}
/**
* APC キャッシュ情報を返します
*/
パブリック関数 info() {
戻り apc_cache_info();
}
}

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

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

文字列は、文字、数字、シンボルを含む一連の文字です。このチュートリアルでは、さまざまな方法を使用して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で後期静的結合(LSB)を実装し、クラスを定義するのではなく、静的コンテキストで呼び出しクラスを参照できるようにします。 1)解析プロセスは実行時に実行されます。2)継承関係のコールクラスを検索します。3)パフォーマンスオーバーヘッドをもたらす可能性があります。

PHPの魔法の方法は何ですか? PHPの魔法の方法には次のものが含まれます。1。\ _ \ _コンストラクト、オブジェクトの初期化に使用されます。 2。\ _ \ _リソースのクリーンアップに使用される破壊。 3。\ _ \ _呼び出し、存在しないメソッド呼び出しを処理します。 4。\ _ \ _ get、dynamic属性アクセスを実装します。 5。\ _ \ _セット、動的属性設定を実装します。これらの方法は、特定の状況で自動的に呼び出され、コードの柔軟性と効率を向上させます。
