PHP エンタープライズ レベルのアプリケーション キャッシュ テクノロジの詳細な説明
以前に PHP キャッシュ テクノロジについて詳しく説明し、主にデータ キャッシュについて説明しました。データ キャッシュは主にデータベース クエリ キャッシュを指します。ページにアクセスするたびに、対応するキャッシュ データが存在するかどうかが最初に検出され、存在しない場合はデータベースに接続してデータを取得し、クエリを完了します。
PHP キャッシュ テクノロジについて詳しく説明し、主にデータ キャッシュについて説明しました。データ キャッシュは主にデータベース クエリ キャッシュを指します。ページにアクセスするたびに、まず対応するキャッシュ データが存在するかどうかを検出し、存在しない場合はデータベースに接続してデータを取得し、クエリ結果をシリアル化して保存します。同じクエリ結果がキャッシュ テーブルまたはファイルから直接取得されます。
最も広く使用されている例は、結果 ID をテーブルにキャッシュし、次回同じキーワードを検索するときに最初にキャッシュ テーブルを検索する Discuz の検索機能です。
一般的な方法では、複数のテーブルが関連付けられている場合、アタッチされたテーブルの内容が配列に生成され、必要に応じて配列が 1 つだけ分解されるという利点があります。テーブルを読み取ることはできますが、欠点は 2 つあります。データを同期するにはさらに多くの手順が必要になるため、速度と引き換えにハードディスクを使用することが重要になります。
ページキャッシュ
ページにアクセスするたびに、まず対応するキャッシュされたページファイルが存在するかどうかを検出し、存在しない場合はデータベースに接続してデータを取得し、ページを表示してキャッシュされたページファイルを生成します。同時に、次回アクセスしたときにページ ファイルが有効になるようにします。 (インターネット上のテンプレート エンジンと一部の一般的なキャッシュ クラスには通常この機能があります)
時間トリガー キャッシュ
ファイルが存在するかどうか、およびタイムスタンプが設定された有効期限よりも小さいかどうかを確認します。 ファイル変更のタイムスタンプが設定された有効期限よりも小さい場合。現在のタイムスタンプから有効期限タイムスタンプを引いた値が大きい場合はキャッシュを使用し、そうでない場合はキャッシュを更新します。
コンテンツトリガーキャッシュ
データが挿入または更新されると、キャッシュは強制的に更新されます。
静的キャッシュ
ここでいう静的キャッシュとは、HTMLやxmlなどのテキストファイルを静的に直接生成し、更新があったときに再生成するものを指します。 あまり変更のないページに適しているので、話は省略します。それについてはここで。
メモリ キャッシング
Memcached は、データベースの負荷を軽減し、動的アプリケーションのアクセス速度を向上させるために使用される高性能の分散メモリ オブジェクト キャッシング システムです。
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("接続できませんでした");
Echo "サーバーのバージョン" : “.$version.”n”
$tmp_object = new stdClass;
$tmp_object->int_attr = 123; ('key', $tmp_object, false, 10) or die (“サーバーでのデータの保存に失敗しました”);
echo “データをキャッシュに保存します (データは 10 秒で期限切れになります)n”;
$get_result = $memcache->get('key');
echo "キャッシュからのデータ:n";
?>
$sql = 'SELECT * FROM users';
$key = md5($sql) //memcached オブジェクト識別子
if ( !($ datas = $mc->get($ key)) ) {
// memcached でキャッシュされたデータが取得できない場合は、データベースクエリを使用してレコードセットを取得します
echo “n”.str_pad('MySQL からデータを読み取ります。 ', 60, '_' )."n";
$conn = mysql_connect('localhost', 'test', 'test');
$result = mysql_query($ sql); $row = mysql_fetch_object($result))
$datas[] = $row;
// 次回アクセスのためにデータベースから取得した結果セットデータをmemcachedに保存します
を使用 $mc->add($key , $datas);
} else {
echo "n".str_pad('memcached からデータを読み込みます。', 60, '_')."n";
var_dump($datas);
?>
PHPバッファ
eaccelerator、apc、phpa、xcacheなど。
MySQL キャッシュ
これも非コードレベルとみなされます。以下の実行時間を見ると、0.09xxx のようです。
[クライアント]
……
default-character-set=gbk
default-storage-engine=MYISAM
max_connections=600
max_connect_errors=500
back_log=200
interactive_timeout=7200
query_cache_size=64M
……
table_cache=512
……
myisam _max_sort_file_size=100G
myisam_max_extra_sort_file_size=100G
myisam_sort_buffer_size=128M
key_buffer_size= 1024M
read_buffer_size=512M
……
thread_concurrency=8
リバースプロキシベースのWebキャッシュ
Nginx、SQUID、mod_PROxyなど(apache2以降はmod_proxyとmod_cacheに分かれています)
NGINXの例:
#user none;
error_log logs/error.log crit;
worker_rlimit_nofile 10240;
epoll を使用します
worker_connections 51200 ;
}
http {
include mime.types;
default_type application/octet-stream
# サーバープール
server 10.10.10.22 4:80 重量 = 1
サーバー 10.10.10.221:80 重み = 1;
アップストリーム bspstylesvr {
サーバー 10.10.10.202:80 重み = 1;
アップストリーム bsphelpsvr {
サーバー10.10.10.204: 80 重み=1;
アップストリーム bspwsisvr {
サーバー 10.10.10.203:80 重み =1
}
アップストリーム bspadminsvr {
サーバー 10.10.10.22 2:80 重量 = 1; 223:80 重量=1;
}
アップストリーム bspsellersvr {
サーバー 10.10.10.225:80 重み=1;
アップストリーム bsploginsvr {
サーバー 10.10.10.220:443 重み=1;
}
アップストリーム bspregistersvr {
server 10.10.10.220:80weight =1;
}
log_format test_com '$remote_addr – $remote_user [$time_local] "$request" '
$status $body_bytes_sent "$http_referer" "$http_user_a紳士「」 ;
#—————— ——————————————————–
#img.test.com
server {
listen 10.10.10.230:80;
server_name img.test.com;
location / {
proxy_pass http://bspimgsvr;
access_log logs/img.log test_com;
#スタイル.test.com
server {
listen 10.10.10.230:80;
server_name style.test.com
location / {
proxy_pass http://bspstylesvr;
}
access_log logs /style.log test_com;
include proxy_setting .conf
server_name admin.test.com; proxy_pass http ://bspadminsvr;
include proxy_setting.conf;
access_log logs/admin.log test_com;
#buyer.test.com
リッスン 10.10.10.23 0:80;
server_name buyer.test.com;
location / {
proxy_pass http://bspbuyersvr;
access_log log s/buyer.log test_com;
#seller.test.com
サーバー {
listen 10.10.10.230:80;
server_name sell.test.com;
location / {
proxy_pass http://bspsellersvr;
proxy_setting.confをインクルードします。
}
access_log logs/seller.log test_com;
}
#wsi.test.com
server {
listen 10.10.10.230:80;
server_name wsi.test.com;
location / {
proxy_pass http://bspwsisvr;
proxy_setting.confをインクルードします。
}
access_log logs/wsi.log test_com;
}
#www.test.com
server {
listen 10.10.10.230:80;
server_name www.test.com *.test.com;
location ~ ^/NginxStatus/ {
stub_status on;
access_log off;
}
location / {
proxy_pass http://bspfrontsvr;
proxy_setting.confをインクルードします。
}
access_log logs/www.log test_com;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
#login.test.com
server {
listen 10.10.10.230:443;
server_namelogin.test.com;
SSLオン。
ssl_certificate cert.pem;
ssl_certificate_key cert.key;
ssl_session_timeout 5m;
ssl_protocols SSLv2 SSLv3 TLSv1;
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
ssl_prefer_server_ciphers がオン。
location / {
proxy_pass https://bsploginsvr;
proxy_setting.confをインクルードします。
}
access_log logs/login.log test_com;
}
#login.test.com 登録用
サーバー {
listen 10.10.10.230:80;
server_namelogin.test.com;
location / {
proxy_pass http://bspregistersvr;
proxy_setting.confをインクルードします。
}
access_log logs/register.log test_com;
}
}
proxy_redirect オフ;
proxy_set_header ホスト $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
client_max_body_size 10m;
client_body_buffer_size 128k;
proxy_connect_timeout 90;
proxy_send_timeout 90;
proxy_read_timeout 90;
proxy_buffer_size 4k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
mod_proxyの例:
ServerName www.zxsv.com
ServerAdmin admin@zxsv.com
#リバースプロキシ設定
ProxyPass / http://www.zxsv.com:8080/
ProxyPassReverse / http://www.zxsv. com:8080/
# キャッシュディレクトリルート
CacheRoot “/var/www/proxy”
# 最大キャッシュストレージ
CacheSize 50000000
# 時間: 4 時間ごと
CacheGcInterval 4
# ページの最大有効期限: 時間
CacheMaxExpire 240
# 有効期限 = (now – last_modified) * CacheLastModifiedFactor
CacheLastModifiedFactor 0.1
# デフォルトの有効期限タグ: 時間
CacheDefaultExpire 1
# コンテンツの割合が取得された後に強制的に完了: 60-90%
CacheForceCompletion 80
CustomLog /usr/local/apache/logs/dev_access_log 結合

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック











PHPとPythonにはそれぞれ独自の利点があり、プロジェクトの要件に従って選択します。 1.PHPは、特にWebサイトの迅速な開発とメンテナンスに適しています。 2。Pythonは、データサイエンス、機械学習、人工知能に適しており、簡潔な構文を備えており、初心者に適しています。

PHPでは、Password_hashとpassword_verify関数を使用して安全なパスワードハッシュを実装する必要があり、MD5またはSHA1を使用しないでください。 1)password_hashセキュリティを強化するために、塩値を含むハッシュを生成します。 2)password_verifyハッシュ値を比較して、パスワードを確認し、セキュリティを確保します。 3)MD5とSHA1は脆弱であり、塩の値が不足しており、最新のパスワードセキュリティには適していません。

PHPは、電子商取引、コンテンツ管理システム、API開発で広く使用されています。 1)eコマース:ショッピングカート機能と支払い処理に使用。 2)コンテンツ管理システム:動的コンテンツの生成とユーザー管理に使用されます。 3)API開発:RESTFUL API開発とAPIセキュリティに使用されます。パフォーマンスの最適化とベストプラクティスを通じて、PHPアプリケーションの効率と保守性が向上します。

HTTPリクエストメソッドには、それぞれリソースを取得、送信、更新、削除するために使用されるGET、POST、PUT、および削除が含まれます。 1. GETメソッドは、リソースを取得するために使用され、読み取り操作に適しています。 2. POSTメソッドはデータの送信に使用され、新しいリソースを作成するためによく使用されます。 3. PUTメソッドは、リソースの更新に使用され、完全な更新に適しています。 4.削除メソッドは、リソースの削除に使用され、削除操作に適しています。

PHPは、サーバー側で広く使用されているスクリプト言語で、特にWeb開発に適しています。 1.PHPは、HTMLを埋め込み、HTTP要求と応答を処理し、さまざまなデータベースをサポートできます。 2.PHPは、ダイナミックWebコンテンツ、プロセスフォームデータ、アクセスデータベースなどを生成するために使用され、強力なコミュニティサポートとオープンソースリソースを備えています。 3。PHPは解釈された言語であり、実行プロセスには語彙分析、文法分析、編集、実行が含まれます。 4.PHPは、ユーザー登録システムなどの高度なアプリケーションについてMySQLと組み合わせることができます。 5。PHPをデバッグするときは、error_reporting()やvar_dump()などの関数を使用できます。 6. PHPコードを最適化して、キャッシュメカニズムを使用し、データベースクエリを最適化し、組み込み関数を使用します。 7

Phpoopでは、self ::は現在のクラスを指し、親::は親クラスを指し、静的::は後期静的結合に使用されます。 1.Self ::静的方法と一定の呼び出しに使用されますが、後期静的結合をサポートしていません。 2.Parent ::サブクラスには、親クラスのメソッドを呼び出すために使用され、プライベートメソッドにアクセスできません。 3.Static ::継承と多型に適した後期静的結合をサポートしますが、コードの読みやすさに影響を与える可能性があります。

PHPは、$ \ _ファイル変数を介してファイルのアップロードを処理します。セキュリティを確保するための方法には次のものが含まれます。1。アップロードエラー、2。ファイルの種類とサイズを確認する、3。ファイル上書きを防ぐ、4。ファイルを永続的なストレージの場所に移動します。

PHPタイプは、コードの品質と読みやすさを向上させるためのプロンプトがあります。 1)スカラータイプのヒント:php7.0であるため、基本データ型は、int、floatなどの関数パラメーターで指定できます。 3)ユニオンタイプのプロンプト:PHP8.0であるため、関数パラメーターまたは戻り値で複数のタイプを指定することができます。 4)Nullable Typeプロンプト:null値を含めることができ、null値を返す可能性のある機能を処理できます。
