この記事では、PHP 分散デプロイメントについて皆さんに共有し、誰もが PHP 分散デプロイメントについてより明確に理解できるようにしたいと考えています。
通常の Web 開発では、ユーザーがログインした後、ログイン ステータス情報がセッションに保存され、ユーザーがよく使用するホット データの一部がファイル キャッシュに保存され、添付ファイル情報がファイル キャッシュに保存されるのが一般的なモードです。ユーザーは Web サーバー上のディレクトリに保存されます。この方法は非常に使いやすく、一般的な Web アプリケーションに完全に対応します。しかし、同時実行性の高いエンタープライズレベルの Web サイトの場合は、それを処理できません。負荷分散を実現するには、Web クラスターを使用する必要があります。
Webクラスター方式でデプロイした後、最初に調整するのはユーザーのステータス情報と添付ファイル情報です。ユーザー ステータスをセッションに保存できなくなり、キャッシュでローカル Web サーバーのファイル キャッシュを使用できなくなり、添付ファイルを Web サーバーに保存できなくなります。クラスター内の各 Web サーバーのステータスが完全に一貫していることを確認する必要があるためです。そのため、ユーザーステータスやキャッシュなどをMemcacheなどの専用キャッシュサーバーに保存する必要があります。添付ファイルは、Qiniu Cloud Storage、Alibaba Cloud Storage、Tencent Cloud Storage などのクラウド ストレージに保存する必要があります。
この記事では、ThinkPHP 開発フレームワークを例として、セッションやキャッシュなどを設定して Memcache キャッシュ サーバーに保存する方法を説明します。
以下に示すように、キャッシュされた Memcache 処理クラスをダウンロードして ThinkphpExtendDriverCache ディレクトリに配置します。Session Memcache 処理クラスをダウンロードして ThinkphpExtendDriverSession ディレクトリに配置します。
構成を変更するファイルを作成し、セッションとキャッシュを調整し、Memcache サーバーに記録します。 ThinkPHPConfconvention.PHP を開き、構成項目を追加します: ビュー
プレーンコピー
/* Memcache キャッシュ設定 */
-
'MEMCACHE_HOST' =&g ; '192.168.202.20'
、 'MEMCACHE_PORT' => 11211,
-
データ キャッシュを Memcache に変更します:
[php]ビュー プレーンコピー
'DATA_CACHE_TYPE' => ’Memcache’,
セッションを Memcache に変更:
[php]ビュー 以下の図に示すように、プレーン Copye'SESSION_TYPE'
= & GT;
'Memcache'- ,
種類がたくさんあるので、クラウド ストレージの場合、添付ファイルはクラウド ストレージに保存されるため、詳細については説明しません。各クラウド ストレージが提供する SDK をパラメータ化するだけです。上記の変更を行うと、Web サーバーを分散方式で導入できるようになります。
添付ファイル1: CacheMemcache.class.php
[php]
ビュー 普通のコピー// +---------------------------- ----------------------------------------
// | ThinkPHP [ WE CAN DO IT JUST THINK IT ]
// +---------------- -------------------------------------------
-
// | 著作権 (c) 2006-2012 http://thinkphp.cn All rights reserved.
// +-------- -------------------------------------------------- -
// | ライセンス済み ( http://www.apache.org/licenses/LICENSE-2.0 )
// +-------- -------------------------------------------------- -
// | 著者: liu21st
// +-------------------------- ----------------------------------------
定義('THINK_PATH') or exit();
/**
* Memcache キャッシュドライバー
* @category Extend
* @package Extend
* @subpackage Driver.Cache
* @author liu21st
*/
クラス CacheMemcache extends キャッシュ {
* アーキテクチャ関数
* @param array $optionsキャッシュパラメータ
* @access public
*/
function __construct($options=array ()) {
if ( !extension_loaded('memcache') ) {
throw_Exception(L('_NOT_SUPPERT_') ).':memcache');
}
$options = array_merge(array (
'ホスト' => C('MEMCACHE_HOST') ? C('MEMCACHE_HOST') : '127.0.0.1',
'ポート' => C('MEMCACHE_PORT') ? C('MEMCACHE_PORT') : 11211,
'タイムアウト' => C('DATA_CACHE_TIMEOUT') ? C('DATA_CACHE_TIMEOUT') : false,
'persistent' => false、
)、$options);
$this->オプション = $オプション;
$this->options['expire'] = isset($options['expire'])? $options['expire'] : C('DATA_CACHE_TIME');
$this->options['prefix'] = isset($options['prefix' ])? $options['プレフィックス'] : C('DATA_CACHE_PREFIX');
$this->options['length'] = isset($options['length'])? $オプション['長さ'] : 0;
$func = $options['永続的'] ? '接続' : '接続';
$this->ハンドラー = 新しい Memcache;
$options['タイムアウト'] === false ?
-
$options['ポート']): 'ホスト']、 $options['ポート'
]、 - $オプション
['タイムアウト']); * @param string $name キャッシュ変数名
-
get($name ) {
N('cache_read',1); return
$this->handler->get($this->options['prefix'
].$name); / ** @param mixed $value ストレージ データ
*/
関数set($name,
$value, $expire = null) { N('cache_write'
,1) ; - オプション[
'期限切れ']; }
-
$name $this->ハンドラー->set($name, $value, 0,
$expire - )) { ️ (
$this->オプション['長さ']>0) {
-> ;キュー( - $name
); return true;
}
return false;
}
/**
* @param string $name キャッシュ変数名
* @ return boolen
*/
公開
関数 rm( $name,
$ttl-
= false) { $name = $this ->オプション['接頭語'].
$名前 ;
return $ttl === false ?
-
$this->ハンドラー->削除($name) :
$this->ハンドラー- >削除($name, $ttl);
}
/**
* @return boolen
*/
public
function clear() {
return $this->handler->flush();
}
}
添付ファイル2:SessionMemcache.class.php
[php] ビュー plain copy
// +------------- ----------------------------------------
// |
// +------------------------------------- ---------------------------------
// | Copyright (c) 2013-
// +---------------------------- ---------------------------------------
/ / | ライセンス済み ( http://www.apache.org/licenses/LICENSE-2.0 )
// +------------------------------------------ --- ----------------------------
// 著者: richievoe
- // +-------------------------------- --- ----------------------------------
- /**
- * セッションを保存するために Memcache をカスタマイズします
- */
- //memcache オブジェクト
- プライベート
$mem;
//セッション有効時間 -
$expire; //外部から呼び出される関数
public function execute(){
session_set_save_handler(
array(&$this,'open' )、
配列(&$this,'close')、
配列(&$this : )、
'); 関数open($path,$name
){ 'SESSION_EXPIRE') ? C( 「SESSION_EXPIRE」) : ini_get
(-
'session.gc_maxlifetime'
); これ $this->mem->connect(C( 'MEMCACHE_HOST'
), C(-
'MEMCACHE_PORT')); /memcache サーバーを閉じる public
function - close(){
-
public
functionread($id ){
-
$ ID c = c ('SESSION_PREFIX') . $ ID
$ data -
= $ This - & GT メム; ->get($id);
: - ''
} //データを保存
- public
function
- write(
$id,$data
) { -
$ ID c = c ('SESSION_PREFIX') . $ ID
// $ data = addlashes ($ data); -
️ Return
$this - ->mem->set(
$id,$data,0, $this->期限切れ); }
- public
関数
- destroy(
$id){
-
$id = C( 'SESSION_PREFIX').$id;️ Return
-
$this->mem-> delete($id); }
- / /ゴミ破壊
-
public
function - gc(){
return 本当です
} ) PHP分散トレーシングに関する経験の共有
PHP分散と大量のデータ処理に関連する問題
php分散アーキテクチャ
以上がPHP 分散デプロイメントの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

tomodifydatainaphpsession、starthessession withsession_start()、$ _sessiontoset、modify、orremovevariables.1)startthessession.2)

配列はPHPセッションに保存できます。 1。セッションを開始し、session_start()を使用します。 2。配列を作成し、$ _Sessionで保存します。 3. $ _Sessionを介して配列を取得します。 4.セッションデータを最適化してパフォーマンスを向上させます。

PHPセッションガベージコレクションは、有効期限が切れたセッションデータをクリーンアップするために確率メカニズムを通じてトリガーされます。 1)構成ファイルにトリガー確率とセッションのライフサイクルを設定します。 2)Cronタスクを使用して、高負荷アプリケーションを最適化できます。 3)データの損失を避けるために、ごみ収集の頻度とパフォーマンスのバランスを取る必要があります。

PHPでのユーザーセッションアクティビティの追跡は、セッション管理を通じて実装されます。 1)SESSION_START()を使用してセッションを開始します。 2)$ _Sessionアレイを介してデータを保存およびアクセスします。 3)セッションを終了するには、session_destroy()を呼び出します。セッショントラッキングは、ユーザーの動作分析、セキュリティ監視、パフォーマンスの最適化に使用されます。

データベースを使用してPHPセッションデータを保存すると、パフォーマンスとスケーラビリティが向上します。 1)MySQLを構成してセッションデータを保存します:PHP.iniまたはPHPコードでセッションプロセッサを設定します。 2)カスタムセッションプロセッサを実装します:データベースと対話するために、開いて、閉じ、読み取り、書き込み、その他の機能を定義します。 3)最適化とベストプラクティス:インデックス、キャッシュ、データ圧縮、分散ストレージを使用して、パフォーマンスを向上させます。

phpssionsStrackuserdataacrossmultiplepagerequestsusingauniqueidstoredinacookie.here'showtomanageetheemefectively:1)Startassession withsession_start()andstoredatain $ _ session.2)RegeneratesseSsessidafterloginwithsession_id(the topreventes_id)

PHPでは、次の手順を通じてセッションデータを繰り返すことができます。1。session_start()を使用してセッションを開始します。 2。$ _Sessionアレイのすべてのキー価値ペアを介してforeachループを反復します。 3.複雑なデータ構造を処理する場合、is_array()またはis_object()関数を使用し、print_r()を使用して詳細情報を出力します。 4.トラバーサルを最適化する場合、ページングを使用して、一度に大量のデータの処理を避けることができます。これにより、実際のプロジェクトでPHPセッションデータをより効率的に管理および使用するのに役立ちます。

このセッションは、サーバー側の状態管理メカニズムを介してユーザー認証を実現します。 1)セッションの作成と一意のIDの生成、2)IDはCookieを介して渡されます。3)サーバーストアとIDを介してセッションデータにアクセスします。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

WebStorm Mac版
便利なJavaScript開発ツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ホットトピック









