ホームページ >バックエンド開発 >PHPチュートリアル >PHP 分散キャッシュ memcached の使いこなしと操作
インターネットが台頭している今日、主要な Web サイトは大きなデータ フローの問題に直面しています。PHP 開発者として一般的に考えられる方法には、ページの静的処理とアンチウイルス処理が含まれます。 -盗難チェーン、アクセスを高速化するための CDN コンテンツ配布、mysql データベースの最適化とインデックス作成、Apache サーバー クラスターのセットアップ ()、現在普及しているさまざまな分散キャッシュ テクノロジ:
1. Memcached とは?
a.Memcached は、データベースの負荷を軽減するための動的 Web アプリケーション用の高性能分散メモリ オブジェクト キャッシュ システムです。データとオブジェクトをメモリにキャッシュしてデータベースの読み取り回数を減らすことにより、動的なデータベース駆動型の Web サイトの速度が向上します。 Memcached は、キーと値のペアを格納するハッシュマップに基づいています。そのデーモンは C で書かれていますが、クライアントは任意の言語で書くことができ、memcached プロトコルを通じてデーモンと通信します。
2. PHP で Memcached を使用する手順
<1>準備: Memcached サービスのインストール パッケージ: memcached-1.2.6-win32-bin.7z をダウンロードし、Memcached サービスの DLL ライブラリ: php_memcache にアクセスします。 .dllwww.memcached.org (公式 Web サイトにはアクセスできないようです。他の場所からダウンロードできます)
<2> パッケージ memcached-1.2.6-win32-bin.7z を解凍します (解凍して Web サーバーと同じディレクトリにコピーできます)、cmd を操作し、解凍したディレクトリに移動し、次のコマンドでインストールします: memcached.exe -d install
具体的な操作は次のとおりです:
<?phpheader("Content-type:text/html;charset=utf-8");//创建Memcache对象$mem = new Memcache(); //连接Memcache服务器if(!$mem->connect("127.0.0.1")) { echo "连接Memcache服务器失败!";}//设置,'myword'参数代表键key,'hello world'代表存放的值,MEMCACHE_COMPRESSED代表压缩内容,50代表存放时间,单位秒if ($mem->set('myword','hello world',MEMCACHE_COMPRESSED,50)){ echo "设置值成功!";}?>
注: 値がメモリに保存されている場合、時間は 30 日以上である必要があります、タイムスタンプを使用して 100 日を設定する必要があります: time()+3600*24*100 のように、0 を設定すると期限切れになりません
b. 値のページを読みます
<?phpheader("Content-type:text/html;charset=utf-8");$mem = new Memcache(); if(!$mem->connect("127.0.0.1")) { echo "连接Memcache服务器失败!";}//读取键myword值$value = $mem->get('myword');if(!$value){ echo "读取失败!";}else{ echo "读取的值=".$value;}c. 削除、更新されました。例:
<?phpheader("Content-type:text/html;charset=utf-8");//创建Memcache对象$mem = new Memcache(); //连接Memcache服务器if(!$mem->connect("127.0.0.1")) { echo "连接Memcache服务器失败!";}//设置,'myword'参数代表键key,'hello world'代表存放的值,MEMCACHE_COMPRESSED代表压缩内容,50代表存放时间,单位秒if ($mem->set('myword','hello world',MEMCACHE_COMPRESSED,50)){ echo "设置值成功!";}//读取键myword值$value = $mem->get('myword');if(!$value){ echo "读取失败!";}else{ echo "读取的值=".$value;}//更新键值$mem->replace('myword','hello everybody!');$value = $mem->get('myword');if(!$value){ echo "读取失败!";}else{ echo "读取的值=".$value;}//删除键myword值$mem->delete('myword');$value = $mem->get('myword');if(!$value){ echo "读取失败!";}else{ echo "读取的值=".$value;}//关闭$mem->close(); ?>注: mem オブジェクトの下には多くのメソッドがあり、マニュアルを読むことで学習できます。
<7> 複数の memcached サーバーの設定は、実際には 1 つの memcached サーバーと少し異なります。設定後、crud が動作するときに、接続プールに複数の memcached サーバーを追加します。対応するサーバーは、対応するアルゴリズムを通じてバランスよく接続され、対応する動作が実行される。
<?phpheader("Content-type:text/html;charset=utf-8");//创建Memcache对象$mem = new Memcache(); //添加多台memcached服务器$mem->addserver('192.168.0.1',11211); $mem->addserver('192.168.0.2',11211);$mem->addserver('192.168.0.3',11211);$mem->addserver('192.168.0.4',11211);//设置,'myword'参数代表键key,'hello world'代表存放的值,MEMCACHE_COMPRESSED代表压缩内容,50代表存放时间,单位秒if ($mem->set('myword','hello world',MEMCACHE_COMPRESSED,50)){ echo "设置值成功!";}//读取键myword值$value = $mem->get('myword');if(!$value){ echo "读取失败!";}else{ echo "读取的值=".$value;}?>
<8> Memcache へのアクセスはユーザーフリーであり、セキュリティを考慮する必要があります。通常、Memcache をイントラネット上に配置し、ファイアウォールを介して Memcache ポートへの外部ネットワーク アクセスを制限します。
<9> ;php.iniを変更することでセッション値をmemcacheサーバーに入れることができます
session.save_handler = filesをsession.save_handler = memcachedに変更します
session.save_path = "N;MODE;/path " を session に変更します。 save_path = "tcp://127.0.0.1:11211"