検索
ホームページバックエンド開発PHPチュートリアルWindows_PHP チュートリアルで memcache を構成する方法

以前「PHP で SESSION データのマルチサーバー共有を実装する」という記事を書きましたが、その記事内の SESSION はデータベースチュートリアルを使用して保存されており、同時アクセス数が多いとサーバーに非常に負荷がかかります。 memcached を使用すると、この問題をうまく解決できます。

ユーザーが Web ページにアクセスすると、memcached に現在のユーザーの SESSION データがあるかどうかを確認し、データが存在する場合は session_id() を一意の識別子として使用します。データが存在しない場合は、それが直接返されます。再度データベースに接続し、SESSION データを取得してこれを使用します。データは次回使用するために memcached に保存されます。 現在の PHP 操作が終了する (または session_write_close() が使用される) と、My_Sess::write() メソッドが呼び出され、データベースにデータが書き込まれます。この場合も、このメソッドは毎回データベース操作を実行します。最適化する必要があります。ユーザーがページに入ったときにグローバル変数を使用して SESSION データを記録し、このデータを write() メソッドで比較して、書き込みたい SESSION データと同じかどうかを確認します。異なる場合は、に接続します。同時に、memcached 内の対応するデータが削除されている場合は、SESSION データが変更されていないことを意味するため、何も操作せずに直接返すことができます。 ;
では、ユーザーの SESSION 有効期限を解決するにはどうすればよいでしょうか? memcached の add() メソッドには有効期限パラメータ $exp があることを覚えていますか?このパラメータ値を SESSION の最大生存時間未満に設定するだけです。また、常にオンラインのユーザーの場合は、条件が満たされた場合にデータベースのデータが更新されるように、write() メソッドで解決できます。

今日は win で memcached を使用する方法を見ていきます

memcache サーバー インストール パッケージを C: memcached フォルダーに解凍した後、cmd コマンド ウィンドウを使用してインストールします。

1>開始>実行: CMD (OK)

2>cd C:memcached (Enter)

3>memcached -d install (Enter を押してインストールを実行します)

4>memcached -d start (Enter を押します。このステップにより memcache サーバーが開始されます。デフォルトでは、64M メモリが割り当てられ、ポート 11211 が使用されます)

現時点では、memcacheサーバーは正常に使用できます。

サーバー上で実行:
# ./memcached -d -m 2048 -l 10.0.0.40 -p 11211
これにより、2G のメモリを占有するプロセスが開始され、リクエストを受信するためにポート 11211 が開きます。 32 ビット システムは 4G メモリのアドレス指定のみを処理できるため、4G を超えるメモリを備えた PAE を使用して 2 ~ 3 つのプロセスを 32 ビット サーバー上で実行し、異なるポートでリッスンできます。

別の例: memcached -d -m 10 -u root -l 192.168.105.73 -p 12000 -c 256 -P /tmp/memcached.pid

-d オプションはデーモンプロセスを開始します。

-m は Memcache に割り当てられたメモリ量 (MB 単位) で、ここでは 10MB です。
-u は Memcache を実行しているユーザーです。私はここでは root です、
-l はリスニングサーバーの IP アドレスです。複数のアドレスがある場合は、サーバーの IP アドレス 192.168.105.73 を指定しました。 -p は、Memcache がリッスンするポートを設定するためのもので、ここでは 12000 を設定します。できれば 1024 より上のポートを設定します。 -c オプションは、実行できる同時接続の最大数です。ここでは、サーバーの負荷に応じて 256 に設定します。 -P は Memcache を保存するための pid ファイルを設定し、/tmp/memcached.pid に保存します。
memcache サーバーのセキュリティ:

Memcache サーバーは、クライアントに接続した直後に動作し、サーバーが直接インターネットに公開されると、最悪の場合、データが漏洩して関係のない人に閲覧される可能性が高くなります。サーバーが侵入される可能性があり、未知のバグやバッファ オーバーフローが存在する可能性があります。そのため、その危険性は予見できます。セキュリティ上の理由から、ハッカーの侵入やデータ漏洩を防ぐための 2 つの提案を次に示します。

ここで、memcache サーバー構成の変更の問題の説明は次のとおりです:

1> 内部ネットワーク IP を使用して Web アプリケーション サーバー呼び出しを行うことはできません (memcache サーバーをサーバー 192.168.1.55 に配置するなど)。

2>ポートを11200に変更するなど変更します

3>1024M (1G メモリ) などのメモリを割り当てます

方法は次のとおりです。

1>開始>実行: CMD (OK)

2>cd C:memcached (Enter)

3>memcached -m 1024 -p 11200 -l 192.168.1.55 (入力)

この時点ではコマンド ラインは C:memcached> 状態に戻らず、実際に memcache サーバーは静かに stop 状態に変化することに注意してください。このウィンドウは閉じることができません。新しいコマンドウィンドウを開きます

4>開始>実行: CMD (OK)

5>cd C:memcached (Enter)

6>memcached -d start (Enter) を押すと、この cmd ウィンドウを閉じることができます。

新しく構成された memcache サーバーが使用できるようになります。

上記の方法はデフォルト構成の変更の問題を解決しますが、閉じることのできない cmd ウィンドウが常に存在します。閉じないと、ポート 11211 のデフォルト構成に戻ります。

より良い解決策は、サービスのレジストリ構成を変更することです:

1>スタート>実行: regedit (Enter)

2> レジストリで見つかりました: HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesmemcached Server

3>デフォルトの ImagePath キー値は次のとおりです: "c:memcachedmemcached.exe" -d runservice、次のように変更します: "c:memcachedmemcached.exe" -d runservice -m 512 -p 11200 -l 192.168.1.55 (OK、登録を閉じます)フォーム)

4>マイ コンピュータ (右クリック) > [管理] > [サービス] memcache サービスを見つけて、一度再起動して有効にします。


現時点では、同じネットワーク セグメント内のコンピューターは引き続きこの memcache サーバーを使用でき、指定された Web アプリケーション サーバーの使用はファイアウォールを介して制限されます。たとえば、Web サーバー 192.168.1.2 に Memcache サーバーへのアクセスを許可するだけで、一部の不正アクセスを効果的に防止できます。これに応じて、セキュリティを強化するために他のルールを追加することもできます。

Memcache サーバーは、クライアントに接続した直後に動作し、サーバーが直接インターネットに公開されると、最悪の場合、データが漏洩して関係のない人に閲覧される可能性が高くなります。 Mecache は root 権限で実行されるため、サーバーに侵入される可能性があり、未知のバグやバッファ オーバーフローが存在する可能性があります。そのため、その危険性は予見できます。セキュリティの観点から、ハッカーの侵入やデータ漏洩を防ぐために 2 つの提案をさせていただきます。

イントラネットアクセス
イントラネットの形式で 2 つのサーバー間 (通常は Web サーバーと Memcache サーバー間) にアクセスするのが最善です。一般的なサーバーには 2 つのネットワーク カードがあり、1 つはインターネットを指し、もう 1 つはイントラネットを指します。次に、Web サーバーがイントラネット ネットワーク カードを介して Memcache サーバーにアクセスできるようにし、Memcache サーバーの IP アドレスと IP アドレスを監視します。イントラネットのポートとイントラネット アクセスにより、他の不正アクセスを効果的に防止できます。
# memcached -d -m 1024 -u root -l 192.168.0.200 -p 11211 -c 1024 -P /tmp/memcached.pid
Memcache サーバーは、イントラネット上の 192.168.0.200 IP の 11211 ポートをリッスンするように設定されており、1024MB のメモリを占有して、最大 1024 の同時接続を許可します

ファイアウォールを設定する
ファイアウォールはシンプルで効果的な方法です。両方のサーバーがインターネットに接続されており、外部 IP 経由で Memcache にアクセスする必要がある場合は、ファイアウォールまたはプロキシ プログラムを使用して不正なアクセスをフィルタリングすることを検討できます。
一般に、Linux では、FreeBSD で iptables または ipfw を使用して、一部の不正アクセスを防止するルールを指定できます。たとえば、Web サーバーに Memcache サーバーへのアクセスのみを許可し、他のアクセスをブロックするように設定できます。
#iptables -F
# iptables -P 入力ドロップ
# iptables -A INPUT -p tcp -s 192.168.0.2 –dport 11211 -j ACCEPT
# iptables -A INPUT -p udp -s 192.168.0.2 –dport 11211 -j ACCEPT
上記の iptables ルールは、192.168.0.2 Web サーバーのみに Memcache サーバーへのアクセスを許可します。これに応じて、セキュリティを強化するために他のルールを追加することもできます。

多くの場合、キャッシュされたクエリの数、ヒット率など、サーバー上の Memcached の動作を監視する必要があります。でも見つけました
その memcached-tool は Linux 上の Perl で書かれており、Windows で使用できるかどうかは試していません。その後、Telnet を使用する簡単な方法を見つけました。

1. Windows システムは memcached ポートに接続します。cmd コマンド ラインに「telnet 192.168.1.1 11211」と入力します。11211 は memcached にバインドされたポート番号です。

2. ポートに接続した後、stats コマンドを入力して、Memcached サーバーの動作を説明するパラメータを取得します。
STAT pid 4356 サーバープロセス ID
STAT 稼働時間 56625 サーバー実行時間、単位は秒
STAT 時間 1225249079 サーバーの現在の UNIX 時間
STAT バージョン 1.1.0 サーバーのバージョン番号
STAT ポインターサイズ 64
STAT rusage_user 151.845489 このプロセスの累積ユーザー時間 (秒: マイクロ秒)
STAT rusage_system 121.667603 このプロセスの累積システム時間 (秒: マイクロ秒)
STAT バッファサイズ 4096
STAT curr_connections 13 接続数
STAT total_connections 54136 サーバーが実行されてから受け入れられた接続の合計数
STAT connection_structs 318 サーバーによって割り当てられた接続構造の数
STAT cmd_get 100595 取得リクエストの総数
STAT cmd_set 6510 ストレージリクエストの総数
STAT get_hits 96543 成功したリクエストの総数
STAT get_misses 4052 失敗したリクエストの総数
STAT bytes_read 4427679 サーバーによってネットワークから読み取られた合計バイト数
STAT bytes_writing 6585596 サーバーによってネットワークに送信された合計バイト数

1>、稼働時間は memcached の実行秒数です、
2>、cmd_get はキャッシュをクエリする回数です。
3>. これら 2 つのデータを除算して、1 秒あたりの平均キャッシュ リクエスト数を取得します。最近 niupu のトラフィックが非常に少ないため、平均リクエストは 1 秒あたり 1 回以上です
これほど大きなプレッシャーがある場合、ファイル システム キャッシュを使用することに問題はありませんが、memcached を使用する利点はまったく反映されません。
4>. 次の cmd_set は key=>value が設定される回数です。 memcached 全体は大きなハッシュであり、cmd_get を使用してコンテンツを見つけることはできません
コンテンツに応じて、cmd_set が呼び出され、キャッシュに書き込まれます。
5> の後に get_hits (キャッシュ ヒット数) が続きます。キャッシュ ヒット率 = get_hits/cmd_get * 100%。
6>。次の get_misses 数と get_hits は cmd_get と等しくなります。
7>、total_itemscurr_items は現在キャッシュ内にあるキーと値のペアの数を表します
。 8>. 図では、total_items == cmd_set == get_misses ですが、利用可能な最大メモリが使い果たされると、memcached は一部のコンテンツを削除し、上記の式は当てはまりません

さて、これがテストコードです

// memcached クラス ファイルが含まれています
require_once('memcached-client.php');
// オプション設定
$options = 配列(
‘servers’ => array(‘192.168.1.1:11211’), //memcached サービスのアドレスとポート。複数の配列要素を使用して複数の memcached サービスを表すことができます
‘debug’ => true, //デバッグをオンにするかどうか
'compress_threshold' => 10240, //データがバイト数を超えた場合に圧縮します
'persistant' => false //永続的な接続を使用するかどうか
);
// memcached オブジェクト インスタンスを作成します
$mc = 新しい memcached($options);
// このスクリプトで使用される一意の識別子を設定します
$key = 'マイキー';
// オブジェクトを memcached に書き込みます
$mc->add($key, 'いくつかのランダムな文字列');
$val = $mc->get($key);
echo “n”.str_pad(‘$mc->add() ’, 60, ‘_’).“n”;
var_dump($val);
// 書き込まれたオブジェクトデータの値を置き換えます
$mc->replace($key, array('some'=>'haha', 'array'=>'xxx'));
$val = $mc->get($key);
echo “n”.str_pad(‘$mc->replace() ’, 60, ‘_’).“n”;
var_dump($val);
// memcached 内のオブジェクトを削除します
$mc->delete($key);
$val = $mc->get($key);
echo “n”.str_pad(‘$mc->delete() ’, 60, ‘_’).“n”;
var_dump($val);
?>


Memcache メソッドのリスト:

Memcache::add — サーバーに項目を追加します
Memcache::addServer — memcached サーバーを接続プールに追加します
Memcache::close — memcached サーバー接続を閉じる
Memcache::connect — memcached サーバー接続を開きます
memcache_debug — デバッグ出力をオン/オフにする
Memcache::decrement — 項目の値をデクリメントします
Memcache::delete — サーバーからアイテムを削除します
Memcache::flush — サーバーにある既存のアイテムをすべてフラッシュします
Memcache::get — サーバーからアイテムを取得する
Memcache::getExtendedStats — プール内のすべてのサーバーから統計を取得します
Memcache::getServerStatus — サーバーのステータスを返す
Memcache::getStats — サーバーの統計を取得する
Memcache::getVersion — サーバーのバージョンを返す
Memcache::increment — 項目の値をインクリメントします
Memcache::pconnect — memcached サーバーの永続接続を開く
Memcache::replace — 既存の項目の値を置換します
Memcache::set — データをサーバーに保存する
Memcache::setCompressThreshold — 大きな値の自動圧縮を有効にする
Memcache::setServerParams — 実行時にサーバーのパラメーターとステータスを変更します

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/629845.html技術記事以前「PHP は SESSION データのマルチサーバー共有を実装する」という記事を書きました。記事内の SESSION は、同時アクセス数が多い場合にデータベース チュートリアルを使用して保存されます...
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
c盘的users是什么文件夹?可以删除吗?c盘的users是什么文件夹?可以删除吗?Nov 10, 2022 pm 06:20 PM

c盘的users是用户文件夹,主要存放用户的各项配置文件。users文件夹是windows系统的重要文件夹,不能随意删除;它保存了很多用户信息,一旦删除会造成数据丢失,严重的话会导致系统无法启动。

微软的pin码是什么微软的pin码是什么Oct 14, 2022 pm 03:16 PM

PIN码是Windows系统为了方便用户本地登录而独立于window账户密码的快捷登录密码,是Windows系统新添加的一套本地密码策略;在用户登陆了Microsoft账户后就可以设置PIN来代替账户密码,不仅提高安全性,而且也可以让很多和账户相关的操作变得更加方便。PIN码只能通过本机登录,无法远程使用,所以不用担心PIN码被盗。

启动任务管理器的三个快捷键是什么启动任务管理器的三个快捷键是什么Sep 21, 2022 pm 02:47 PM

启动任务管理器的三个快捷键是:1、“Ctrl+Shift+Esc”,可直接打开任务管理器;2、“Ctrl+Alt+Delete”,会进入“安全选项”的锁定界面,选择“任务管理器”,即可以打开任务管理器;3、“Win+R”,会打开“运行”窗口,输入“taskmgr”命令,点击“确定”即可调出任务管理器。

window下报错“php不是内部或外部命令”怎么解决window下报错“php不是内部或外部命令”怎么解决Mar 23, 2023 pm 02:11 PM

对于刚刚开始使用PHP的用户来说,如果在Windows操作系统中遇到了“php不是内部或外部命令”的问题,可能会感到困惑。这个错误通常是由于系统无法识别PHP的路径导致的。在本文中,我将为您提供一些可能会导致这个问题的原因和解决方法,以帮助您快速解决这个问题。

windows操作系统的特点包括什么windows操作系统的特点包括什么Sep 28, 2020 pm 12:02 PM

windows操作系统的特点包括:1、图形界面;直观高效的面向对象的图形用户界面,易学易用。2、多任务;允许用户同时运行多个应用程序,或在一个程序中同时做几件事情。3、即插即用。4、出色的多媒体功能。5、对内存的自动化管理。

win10自带的onenote是啥版本win10自带的onenote是啥版本Sep 09, 2022 am 10:56 AM

win10自带的onenote是UWP版本;onenote是一套用于自由形式的信息获取以及多用户协作工具,而UWP版本是“Universal Windows Platform”的简称,表示windows通用应用平台,不是为特定的终端设计的,而是针对使用windows系统的各种平台。

win10为什么没有“扫雷”游戏了win10为什么没有“扫雷”游戏了Aug 17, 2022 pm 03:37 PM

因为win10系统是不自带扫雷游戏的,需要用户自行手动安装。安装步骤:1、点击打开“开始菜单”;2、在打开的菜单中,找到“Microsoft Store”应用商店,并点击进入;3、在应用商店主页的搜索框中,搜索“minesweeper”;4、在搜索结果中,点击选择需要下载的“扫雷”游戏;5、点击“获取”按钮,等待获取完毕后自动完成安装游戏即可。

在windows中鼠标指针呈四箭头时一般表示什么在windows中鼠标指针呈四箭头时一般表示什么Dec 17, 2020 am 11:39 AM

在windows中鼠标指针呈四箭头时一般表示选中对象可以上、下、左、右移动。在Windows中鼠标指针首次用不同的指针来表示不同的状态,如系统忙、移动中、拖放中;在Windows中使用的鼠标指针文件还被称为“光标文件”或“动态光标文件”。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

SublimeText3 中国語版

SublimeText3 中国語版

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

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。