ホームページ  >  記事  >  バックエンド開発  >  Memcache を使用した PHP でのデバッグ方法の紹介と応用

Memcache を使用した PHP でのデバッグ方法の紹介と応用

WBOY
WBOYオリジナル
2016-08-08 09:29:33794ブラウズ

Memcacheを使用したPHP

のデバッグ方法の紹介と応用 ネットワーク開発、特に大規模なトラフィックの

webプロジェクトの開発に携わっている場合、応答速度を向上させ、トラフィックを減らすためにdata クエリ操作には、すべて memcahce を使用します。まず、memcacheの使い方を説明します。ここでは、windowsでのインストールと設定を以下のように紹介します。 linux MemcacheInstall:

1.linuxmemcache

バージョンをダウンロードします。memcached に注意してくださいuse libeven t はイベントとして使用されますドライバーなので、最初にインストールする必要がありますlibevent2. pecl::memcacheをインストールします。 pecl 、Windows

Memcacheのインストール: 1.

Windowsmemcache

安定版をダウンロードし、解凍して特定のディスクに置きます。

など

c:emcached

2(すなわち

cmd

コマンドインターフェイス)。 「

c:memcachedmemcached.exe -d start

」 開始します。 注: 将来、memcachedは、

windowsを起動するたびにサービスとして自動的に開始されます。これでサーバー側のインストールが完了しました。 4.http://pecl4win.php.net/ext.php/php_memcache.dllをダウンロードし、対応するphp

バージョンファイルを

で見つけてください5. C:winntphp.ini extension=php_memcache.dll」という行を追加します

6.再起動Apacheを確認し、phpinfoがある場合は memcache , これでインストールは成功です。 3. memcached

の基本設定:

-p リスニングポート-l 接続済み IP

アドレス

デフォルトはローカルマシン -d スタートStartmemcached

service

-d restart Restartmemcachedservice-d stop|shutdown 実行中のmemcached

サービスを閉じる

-d インストール インストール

memcached

service

-d uninstall Uninstallmemcachedservice -u

として実行(

rootとしてのみ実行 )

-m 最大メモリ使用量、単位 MB。デフォルト

64MB

-M メモリが枯渇した場合、項目を削除する代わりにエラーを返す -c

同時接続の最大数、デフォルトは

1024-f ブロックサイズ増加係数、デフォルトは

1.25-nです

最小割り当てスペース、key+value+flagsデフォルトは

48

-hですphp.iniの設定は4つです。 : [Memcache]

高性能分散メモリオブジェクトキャッシュシステムで、統合された巨大なハッシュテーブルをメモリ内に維持することで、画像、動画、ファイル、データベース検索結果などを含む様々な形式のデータを保存するために使用できます。

エラーが発生したときに他のサーバーに透過的にフェイルオーバーするかどうか。

memcache.allow_failover = On

データの送受信時に試行するサーバーの最大数。これは、memcache.allow_failoverがオンになっている場合にのみ有効です。 memcache.max_failover_attempts = 20

この値で設定されたブロックサイズに従ってデータが転送されます。値が小さいほど、より多くの追加ネットワーク トラフィックが必要になります。原因不明の速度低下に気付いた場合は、この値を 32768 に増やしてみてください。

memcache.chunk_size = 8192

memcachedサーバーに接続するときに使用されるデフォルトのTCPポート。

memcache.default_port = 11211

keyserverにマッピングする戦略を制御します。デフォルト値 "standard" は、以前のバージョンの古い hash 戦略を使用することを意味します。

"consistent"に設定すると、/を追加して、keyserverの間のマッピング関係を再計算することなく、接続プール内のサーバーを削除できます。

memcache.hash_strategy = "standard";

keyserverにマッピングするハッシュ関数を制御します。デフォルト値 "crc32"CRC32 アルゴリズムを使用しますが、"fnv"FNV-1a アルゴリズムを使用することを意味します。 FNV-1aCRC32よりも若干遅いですが、ハッシュ効果が優れています。

memcache.hash_function = "crc32"

memcacheは、session,のストレージモジュールとしても使用できます。詳細については、:memcache PHPを参照してください セッション。 save_handler.

1 . $memcache = 新しい Memcache; 2. $memcache->connect('localhost', 11211) または die ("接続できませんでした"); = $memcache-> getVersion();

5. echo "サーバーのバージョン: ".$version."
n"; 6.

7. $tmp_object = new stdClass; $tmp_object->str_attr = 'test';

9. $tmp_object->int_attr = 123;

10.

11. $memcache->set('key', $tmp_object, false, 10) or die ("サーバーにデータを保存できませんでした");

12. echo "データをキャッシュに保存します (データは 10 秒で期限切れになります)"

13.

14. $get_result = $memcache- > get('key');

15. echo "キャッシュからのデータ:
n"; 16.

17. var_dump($get_result);

memcache

を用意したので、今度はテストのために

memcache.

をデバッグする方法を説明します。

最初にテーブルを作成します:

create table t(id char(36) not null Primary key, username varchar(20) not null);

データを挿入します: insert into tvalues (uuid() ,' Livia'),(uuid(),'Lucy'),(uuid(),'Sivia'),(uuid(),'david');簡単なスクリプトを書いてテストします。

$host = '192.168.1.21:3306'; 

$user = 'ウェブユーザー'; 

$passwd = '123456'; 

$db = 'テスト'; 

$conn = mysql_connect($host,$user,$passwd); 

mysql_select_db($db,$conn); 

$sql = 'select * from t order by id desc'; 

$result = mysql_query($sql,$conn); 

while ($row = mysql_fetch_array($result,MYSQL_ASSOC)){

$test_key[] = $row; 

}

$sql = md5($sql); 

$mem = 新しい Memcache; 

$mem->connect("192.168.1.21", 11211); 

$mem->set($sql,$test_key, MEMCACHE_COMPRESSED, 600);

print_r($mem->get($sql)); 

?>

看看結果完了。

(

[id] => d8f1ec2a-c033-11dd-bd1a-002215c94322

[ユーザー名] => david

)

[1] => 配列

(

[id] => : 1ea9a-c033-11dd-bd1a- 002215c94322

[ユーザー名] => ルーシー

)

[3] => 配列

(

[id] => d8f1e658-c033-11dd-bd1a-00221 5c94322

[ユーザー名] => Livia

)

)

现ではすでに紹介しました

Memcache

のインストール、これ以上は説明しません。 ::add //

追加一值,如果已经存在,则返

false

Memcache::addServer //

追加

Memcache

地址

Memcache::close //

关闭一

Memcacheの接続Memcache: :connect // 打开一へ

Memcache

の接続Memcache::decrement //

对保存される特定の

key内の値を実行する减法操作 Memcache::delete //

删除一

Memcache上のkey

Memcache::flush // 刷新すべてMemcache

上に保存されている项目(除く全ての保存的项目)

Memcache::get // Memcache

上获取一

keyMemcache::getExtendedStats // 获取池内のすべての行程の実行系システム统计Memcache::getServerStatus / /

获取実行サービス务器のパラメータ

Memcache::getStats //获取当前Memcache

サービス务器の状態态

Memcache::getVersion // 返し実行中のMemcacheのバージョン情報 Memcache::increment //

对保存される特定の

key

内の一部の追加法操作

Memcache::pconnect //

一つを打って

Memcacheの长连接Memcache ::replace //

代替换一个已经存在

Memcache服务器上の项目(機能类似Memcache::set

Memcache::set // 方向 Memcache

追加一个值,如果すでに存在,上書き

Memcache::setCompressThreshold // 对特定の大きさのデータを実行しますMemcache::setServerParams //

実行中に修正サービスのパラメータ

以下は一部です簡単な使用法例、補足: $mem = new Memcache; $mem->connect("127.0.0.1", 12000);

//Memcache::set メソッドには 4 つのパラメータがあります。最初のパラメータは key

、2 番目のパラメータは value、3 番目のパラメータはオプションで、圧縮して保存するかどうかを示し、4 番目のパラメータはオプションのパラメータは、期限切れ時の自動破棄の時間を設定するために使用されます。

$mem->set('test','123',0,60);

//Memcache::add メソッドは Memcache::set メソッドに似ていますが、違いは次のとおりです。 Memcache::add メソッドの戻り値は false です。これは、この key が既に存在しており、Memcache::set メソッドがそれを直接上書きすることを意味します。

$mem->add('test','123',0,60);

//getメソッドの機能は、key値、Memcache::を取得することです。 getメソッドにはkeyを表すパラメータがあります。

$mem->get('test');//出力は '123'

//Memcache::replace このメソッドの機能は、既存の key を置き換えることです 上書き操作の場合、Memcache::replace メソッドには 4 つのパラメーターがあり、Memcache::set メソッドと同じ機能があります。

$mem->replace('test','456',0,60);

//Memcache::deleteメソッドは、key値を削除することです、Memcache:: delete メソッドには 2 つのパラメーターがあります。最初のパラメーターは key を表し、2 番目のパラメーターはオプションで削除遅延時間を表します。

$mem->delete('test',60);

?>

Xiao Chenghu

PHP キャッシュ アプリケーション: P HP MEMCACHE の詳しい説明

2010-01-28 09:38:44 出典:中国駅長サイト総合 [大中小] コメント数: 0 寄稿したい、この記事を集めたい、Weibo にシェアしたい

ウェブマスター取引 (http://jy.chinaz.com) はウェブマスターがお金を稼ぐのに役立ちます、仮想ホストの評価+ IDC ナビゲーション = IDC123. COM

Memcache 関数ライブラリは PECL (PHP Extension Community Library) にあり、その主な機能は、大容量のメモリ データの一時保存領域を構築することです。使用することはお勧めしません。 ubuntu にインストールして実行すると、エラーが発生します:


/usr/local/memcached/bin/memcached: 共有ライブラリのロード中にエラーが発生しました: libevent-1.4.so.2:
共有オブジェクト ファイルを開けません:そのようなファイルまたはディレクトリはありません

「libeven、memcached、libmemcache のインストール」の方法に従い、次を使用します:

sudo ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so.2

このバグは修正可能です

Xindeli を通じて php の memcached モジュールをインストールし、/etc/php5/conf.d/memcached の「」の登録を解除します。 ini" ;"、Apache を再起動し、phpinfo() を呼び出して memcached 情報を表示します。

$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("接続できませんでした"); > ;getVersion();
echo "サーバーのバージョン: ".$version."n";>


03.$memcache->connect('localhost', 11211) or die (「接続できませんでした」); 

04.$memcache->set( 'name', 'leo', 0, 30); 05.if(!$memcache->add( 'name', 'susan', 0, 30))

1. 

2. $memcache = 新しい Memcache;    

3. $memcache->connect('localhost', 11211) or die (「接続できませんでした」);    

4. print_r($memcache->getStats());    

5. /**   

6. * 配列

7. * (

8. * [pid] => 8052

9. * [稼働時間] => 9205

10. * [時間] => 1205898428

11. * [バージョン] => 1.2 .5

12. * [ポインターサイズ] => 32

13. * [rusage_user] => 0.008000

14. * [rusage_system] 0.000000

15. * [curr_items] => 1

16. * [合計アイテム数] => 17

17. * [curr_connections] =>

19. * [合計接続数] => 15

20. * [接続構造] => 3

21. * [cmd_get] =>22. * [cmd_set] => [get_hits] => 5

24. * [get_misses] => 4

25. * [エビクション] => [bytes_read] => * [バイト] _書き込み] => 850

28. * [ limit_maxbytes] => 10485760

29. * [スレッド] => 1

30. * )

31. */

32. ?>  

01.02.$memcache = 新しい Memcache; 

06.{ 07. エコー「スーザンは存在します」; 08.}; 09.$memcache->replace( 'name', 'lion', 0, 300); 03. print 「memcache '$host:$port' が失敗しました」; 04.} 05.$memcache = 新しい Memcache; 
10.echo $memcache->get( 'name'); 

11.$memcache->delete( 'name', 5); 
12.?> 










01.02.function _callback_memcache_failure($host, $port) {

06.$memcache->addServer('192.168.1.116', 11211); 07.$memcache->setServerParams('192.168.1.116', 11211, 1, 15, true,

08. 09.'_callback_memcache_failure'); 
10.echo $memcache->getServerStatus('192.168.1.116', 11211); 

11.?> 




PHPキャッシュアプ​​リケーション:PHP MEMCACHE 詳細解説(2)

2010-01-28 09:38:44 ソース: 中国ウェブマスター総合 [大中小] コメント: 0 この記事を集めて共有したいです。 Weibo

Webmaster Trading (http://jy.chinaz.com) は、ウェブマスターの収益を支援します 仮想ホストの評価 + IDC ナビゲーション = IDC123.COM

memcached サービスが正式に開始されました

オブジェクト指向のアプローチを使用することをお勧めしますこのライブラリをテストするには:

Memcache::getVersion メソッドの機能は、実行中の Memcache のバージョン情報を返すことです。

Memcache::getStats メソッドの機能は、サーバーの実行統計を返すことです。 Memcache::getStats メソッドには 3 つのパラメータがあります。最初のパラメータは、reset、malloc、maps、cachedump、slabs、items、size を示します。2 番目のパラメータと 3 番目のパラメータは、最初のパラメータに設定されます。 Memcache::getExtendedStats メソッドは、プロセス プール内のすべてのプロセスの実行中のシステム統計を取得するために使用されます。

memcache_debug() 関数は、デバッグ関数を制御するために使用されます。前提条件として、php のコンパイル時に –enable-debug オプションが使用されます。それ以外の場合、この関数は何の効果もありません。

Memcache::addServer メソッドは、使用できるサーバー アドレスを追加するために使用されます。 Memcache::addServer メソッドには、最初のパラメーターを除く 8 つのパラメーターがあり、サーバーのアドレスを示します。 、2 番目のパラメータはポートを示し、3 番目のパラメータは永続的な接続かどうかを示し、4 番目のパラメータはすべてのサーバの中のこのサーバの重みを示し、5 番目のパラメータは接続の継続時間を示し、6 番目のパラメータは最初のパラメータを示します。デフォルトは 15 です。これを -1 に設定すると、サーバーのオンライン ステータスを制御するために使用され、エラー メッセージを処理するためのフォールバック関数を設定できます。

Memcache::setServerParams メソッドは、実行時にサーバーのパラメーターを変更するために使用されます。 Memcache::setServerParams メソッドには 6 つのパラメーターがありますが、Memcache::addServer メソッドには 3 番目と 4 番目のパラメーターがありません。 Memcache::getServerStatus メソッドは、実行中のサーバーのパラメーターを取得するために使用されます。2 つのパラメーターはそれぞれアドレスとポートを表します。

Memcache::flush メソッドは、キャッシュされたデータをすべてクリアするために使用されますが、使用されるメモリ領域は減りません。

Memcache::increment メソッドは保存されたキーの値を加算するために使用され、Memcache::decremen メソッドは保存されたキーの値を減算するために使用されます。

PHP MEMCACHE 高度なキャッシュアプ​​リケーションの詳細説明 記事エントリ: 7747.Net 責任編集者: 7747.Net 269

[Font: Small Large]

Memcache 関数ライブラリは PECL (PHP Extension Community Library) にあり、その主な機能は大容量メモリ データ用の

一時ストレージ領域を構築することです。それ以外の場合は使用をお勧めしません。それ。 Ubuntu に

をインストールしたときに、次のエラーが報告されました:
/usr/local/memcached/bin/memcached: 共有ライブラリの読み込み中にエラーが発生しました: libevent-1.4.so.2:

共有オブジェクト ファイルを開けません: No such fileまたはディレクトリ

「libeven、memcached、libmemcache のインストール」の方法に従い、

sudo ln -s /usr/local/lib/libevent-1.4.so.2 /usr/lib/libevent-1.4.so を使用します。 2
このバグは修正可能です

Xindeliを通じてphpのmemcachedモジュールをインストールし、/etc/php5/conf.d/memcached.iniの「;」の登録を解除し、Apacheを再起動

して、phpinfo()を呼び出してmemcachedを表示します情報

実行:

$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die ("接続できませんでした"); ;getVersion();
echo "サーバーのバージョン: ".$version."
?>
$memcache = new Memcache; 11211 ) または die ("接続できませんでした");
/** 
* 配列
* (
* [pid] => 8052
* [稼働時間] => 9205
* [時間] => 1205898428
* [バージョン] => 1.2.5
* [pointer_size] = > 32
* [rusage_user] => 0.008000
* [rusage_system] => 0.000000
* [total_items] => 17
* [バイト] => 57
* [curr_connections] => 2
* [total_connections] => 15
* [接続構造] => 9
* [cmd_set] 23
* [get_hits] => ; 5
* [get_misses] => 4
* [エビクション] => 0
* [bytes_read] => 850 [limit_maxbytes] => 10485760
* [スレッド] => 1
* )
*/
$memcache = 新しい Memcache; $memcache->connect('localhost', 11211) or die ("接続できませんでした")
$memcache->set('name', 'leo', 0, 30); ->add( '名前', 'スーザン', 0, 30))
{
エコー 'スーザンは存在します'
$memcache->replace( '名前', 'ライオン', 0, 300 );
echo $memcache->get( 'name');
$memcache->delete( 'name', 5);
$ Memcache = 新しい Memcache; $ Memcache-& GT; setServerParams (' 192.168) .1.116', 11211, 1, 15, true,
'_callback_memcache_failure');
ech o $memcache->getServerStatus('192.168.1.116', 11211);
$meマックキャッシュ =新しい Memcache;
$memcache->connect('localhost', 11211);
$memcache->increment('test_item', 4); $memcache->decrement('test_item', 7)
// 5 を表示します
?>

/usr/local/bin/memcached -d -m 10 -u root -l 127.0.0.1 -p 11211 -c 256 -P
/tmp/memcached.pid
memcached のサービスが正式に開始されました

Memcache::add —値を追加します (既に存在する場合は false を返します)
Memcache::addServer — 使用するサーバー アドレスを追加します
Memcache::close — Memcache オブジェクトを閉じる
Memcache::connect — Memcache オブジェクトを作成します
memcache_debug — 制御デバッグ関数
Memcache::decrement — 保存されたキーの値を減算します
Memcache::delete — キー値を削除します
Memcache::flush — キャッシュされたデータをすべてクリアします
Memcache::get — キー値を取得します
Memcache::getExtendedStats — を取得しますプロセスプール内のすべてのプロセスの実行中のシステム統計
Memcache::getServerStatus — 実行中のサーバーのパラメーターを取得します
Memcache::getStats — サーバーの実行中の統計を返します
Memcache::getVersion — 実行中の Memcache のバージョン情報を返します
Memcache ::increment — 保存されたキーに値を追加します
Memcache::pconnect — Memcache 永続接続オブジェクトを作成します
Memcache::replace — R が既存のキーを上書きします 操作
Memcache::set — 値がすでに存在する場合は追加します上書きします
Memcache::setCompressThreshold — 特定のサイズより大きいデータを圧縮します Memcache::setServerParams — 実行時にサーバー パラメーターを変更します

このライブラリをテストするには、指向性オブジェクト メソッドを使用することをお勧めします:

Memcache::getVersion メソッドは、次の目的で使用されます。実行中の Memcache のバージョン情報を返します。

Memcache::getStats このメソッドの機能は、サーバーの実行統計を返すことです。 Memcache::getStats メソッドには 3 つのパラメーターがあります。最初のパラメーターは、reset、malloc、maps、cachedump、slabs、items、size の 3 つのパラメーターを示します。2 番目のパラメーターと 3 番目のパラメーターは、3 番目のパラメーターで使用されます。パラメータは「cachedump」に設定されます。 Memcache::getExtendedStats メソッドの機能は、プロセス プール内のすべてのプロセスの実行中のシステム統計を取得することです。

Memcache::connect メソッドは、Memcache オブジェクトの作成に使用されます。 Memcache::pconnect メソッドは、

Memcache 永続接続オブジェクトを作成するために使用されます。 Memcache::close メソッドは、Memcache オブジェクトを閉じるために使用されます。

Memcache::set メソッドの機能は、値を追加することです。Memcache::set メソッドには 4 つのパラメーターがあります。最初のパラメーターはキー、2 番目のパラメーターは値、3 番目のパラメーターは圧縮保存するかどうかを示します。 、4 番目のパラメーターはオプションで、期限切れ後の自動破棄の時間を設定するために使用されます

。 Memcache::add メソッドは Memcache::set メソッドに似ていますが、Memcache::add メソッドの戻り値が

false の場合はキーがすでに存在することを意味するのに対し、Memcache::set メソッドは同じであるという点が異なります。メソッドはそれを直接上書きします。 Memcache::get メソッドの機能は、キー値を取得することです。Memcache::get メソッドには、キーを表すパラメーターがあります。 Memcache::replace メソッドは、既存の

キーを上書きするために使用されます。 Memcache::replace メソッドには 4 つのパラメーターがあり、Memcache::set メソッドと同じ機能があります。

Memcache::delete メソッドの機能は、キー値を削除することです。Memcache::delete メソッドには 2 つのパラメーターがあり、最初のパラメーターはキー

を表し、2 番目のパラメーターはオプションで、削除遅延時間を表します。

memcache_debug() 関数は、php のコンパイル時に –enable-debug オプションが使用されている場合、デバッグ関数を制御するために使用されます。それ以外の場合、

この関数は何の効果もありません。

Memcache::addServer このメソッドの機能は、使用できるサーバー アドレスを追加することです。最初のパラメーターを除き、他のパラメーターはオプションです。 2 番目のパラメータはポートを示し、3 番目のパラメータは永続的な接続かどうかを示し、4 番目のパラメータはすべてのサーバの中のこのサーバの重みを示し、5 番目のパラメータは接続の継続時間を示します。接続を再試行する間隔。デフォルトは 15 です。-1 に設定すると、サーバーのオンライン ステータスを制御するために使用されます。8 番目のパラメーターは、エラー メッセージを処理するためのコールバック関数を設定します。

Memcache::setServerParams メソッドは、実行時にサーバーのパラメーターを変更するために使用されます。 Memcache::setServerParams メソッド

には 6 つのパラメーターがありますが、Memcache::addServer メソッドには 3 番目と 4 番目のパラメーターがありません。 Memcache::getServerStatus メソッドは、実行中のサーバーのパラメーターを取得するために使用されます。2 つのパラメーターはそれぞれアドレスとポートを表します。

Memcache::flush メソッドはキャッシュされたデータをすべてクリアするために使用されますが、使用されるメモリ領域は減りません。

Memcache::increment メソッドは保存されたキーの値を加算するために使用され、Memcache::decremen メソッドは保存されたキーの値を減算するために使用されます。

Discuz! の Memcache キャッシュの実装について

前書き:
この記事は、PHP+MySQL アーキテクチャ サイトにおいて、MySQL の観点から Discuz! Forum (または同様の PHP+MySQL アーキテクチャ プログラム) が大量のアクセスに対処する方法を分析することに焦点を当てています。同時に、Memcache を使用して MySQL への負荷を軽減するためのいくつかの提案が提供されます。データの多くは個人的なテストの結果です。異なる意見がある場合は、メッセージを残してください。なお、個人的な思考の問題により、少々飛躍した文章になっておりますが、ここに宣言させていただきます!
システム分析:
純粋に MySQL の観点から見ると、1 つの MySQL データベースに 1 日に数億のオペレーション (1 秒あたり約 1,100 の MySQL オペレーションを 86,400 倍) でロードすることは、それほど難しいことではありません。このデータによると、MySQL サーバーが 1 台あるフォーラムでは 2,000 万 PV を達成するのは問題ではないということですが、国内のフォーラムのほとんどは 1 日あたり 2,000 万 PV を達成することはできないと思いますが、実際はそうではありません。フォーラムのPVが100万を超えると、WEBはもう圧倒されてしまいます。
私が手元にあるデータによると、Discuz! Forum の現在の基本サーバー アーキテクチャは、前部の Squid と後部の DB によってサポートされています。このアーキテクチャでは、Web サーバーへの負荷の増加はサーバーを並列に追加することで解決できますが、MySQL への負荷は解放される場所がありません。公式の MySQL サービスを考慮せずに、適切に使用することで MySQL サーバーへの負荷を軽減できます。メムキャッシュの。
一部の友人は、データテーブルをサブテーブルにできると言うかもしれません (注: ここでのサブテーブルとは、pw、dv サブテーブルなど、PHP プログラムを介したサブテーブルを指します) が、現在の状況では、DB サーバーは、現在のデータ処理はサポートされていますが、PHP を介してテーブルを MySQL に分割しても、MySQL の負荷を軽減することはできません。 (注: この段落は、すでに形成されているシステムに関するものです。独自に開発したシステムの場合は、アーキテクチャの初期段階でデータ パーティションを同期することをお勧めします。)
友人の中には、次のマスター/スレーブ アーキテクチャを使用するという人もいるかもしれません。 MySQL です。これを提案する場合は、マニュアルをもう一度読んで問題を明確に説明します。 Mysql マスター/スレーブ モードでは、スレーブは主にデータのバックアップに使用され、マスターに障害が発生した場合にのみ、スレーブはマスターのサービスを引き継ぎ、マスターが正常に戻るまで外部リクエストを処理します。つまり、マスター/スレーブでは、マスターまたはスレーブのどちらかがサービスを提供し、マスター/スレーブが同時にサービスを提供することはありません。 MySQL マスター/スレーブを使用しても、MySQL の負荷を効果的に軽減することはできません。
なぜ MySQL Cluster を使用しないのかと尋ねられるかもしれませんが、同じ金額を費やすのであれば、最大のメリットを得るのが最善の方法です。 PS: 余談になりますが、MySQL のマニュアルでは MySQL クラスターを MySQL クラスターと説明していますが、これには慣れていません。実際、MySQL 5.1 の MySQL パーティションは非常に優れたもので、任意のサイズに設定できるルールに従って、単一テーブルの複数の部分をファイル システム全体に割り当てることができます。実際には、テーブルの異なる部分が別のテーブルとして異なる場所に保存されます。これは、現在の状況下で MySQL の負荷を軽減するための最も積極的かつ効果的なソリューションの 1 つであると思います。しかし、残念ながら、私にはこの MySQL パーティショニング方法を個人的に使用した経験がなく、それが安定しているか不安定であるかを示す十分な事例もありません。それで今も放浪中です。知っていたら教えてください! Tencent は MySQL パーティショニングを使用していると言う友人もいましたが、残念ながら正確なデータは入手できませんでした。
ユーザー環境要件などの特定の条件下で、MySQL の負荷を軽減するための多くの方法を分析してまとめた結果、現在の状況では、Discuz! の MySQL 負荷を軽減するのがより効果的な方法であるという結論に達しました。 Memcacheを使うには!
Memcache を使用する理由: 1. Web サーバー (Lighttpd と Nginx は Apache よりもはるかに効率的と言われています。試してみてください) は高い CPU 要件と低いメモリ要件を備えています。Memcached サーバーの CPU 要件とメモリ要件は低いです。高さがあるので併用可能です。フロントエンド Web サーバーに Memcached サーバーをインストールすることは可能です。
2. お金、お金、お金、最小の努力で最大の利益。
3. 合理的なアーキテクチャを備えたシステムの場合、Memcache サポートの追加は単なるバッチ処理です。Memcache を使用してください
1。config.inc.php .0.1 に
$memcachehost = '127.0 を追加します。 ';
$memcacheport = 11211;
$memcachelife = 60; include/common.inc.php 内
$mem->connect($memcachehost, $memcacheport); include/db_mysql.class.php の fetch_array メソッドと query メソッドを変更し、query_mysql メソッドを追加します。コードは次のとおりです。
function fetch_array($query, $result_type = MYSQL_ASSOC) {
return is_resource($query) ? $query, $result_type) : $query[0];
}
function query_memcache($sql, $type = '') {
global $mem,$memcachelife = md5($sql); !($query = $mem->get($key))) {
$query = $this->query($sql, $type);
while($item = $this->fetch_array ($)クエリ)) {
$res[] = $item;
$query = $res;
$key, $query, 0, $memcachelife); }
function query($sql, $type = '') {
global $debug, $discuz_starttime, $sqldebug, $sqlspenttimes;
$func = $type == 'UNBUFFERED' && @function_exists('mysql_unbuffered_query')
'mysql_unbuffered_query' : 'mysql_query';
if(!($query = $func($sql, $this->link)) && $type != 'SILENT') {
$this->halt( 'MySQLクエリエラー', $sql);
}
if(substr($sql, 0, 6) == 'SELECT') {
echo 'キャッシュ SQL:'.$sql.'
' } else {
echo 'Flash SQL:'.$sql.'
';
$this->querynum++;
}
4. Memcache によってキャッシュされる必要がある SQL クエリのコードは、
によって記述されます。 $db- >query(
$db->query_memcache(
Note および
while($post = $db->fetch_array($query))) {
foreach($query as $post に変更) ) {
$db->fetch_array without while は変更する必要はありません。
役立つ場合は、次のコードを使用してください:
preg_replace("/while


[数学処理エラー]
)/is", "foreach($query as $\1)", $file);
後でリリースします。ガジェットをバッチで交換します。
EditPlus で次のように置き換えることができます: while

[数学処理エラー]
) は foreach($query as $1) に置き換えられます
5. 完了しました。テストしてください。 ~
参考資料:
Memcached について質問がある場合は、次の記事を参照してください:
Linux での Memcache のインストール: http://www.ccvita.com/index.php/257.html
Windows での Memcache のインストール: http: //www.ccvita.com/index.php/258.html
Memcache の基本チュートリアル: http://www.ccvita.com/index.php/259.html Discuz! の Memcache キャッシュ実装: http:// www .ccvita.com/index.php/261.html 上記では、関連する側面も含めて、Memcache を使用した PHP のデバッグ方法の紹介と応用を紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。


01.02.$memcache = newメムキャッシュ ;
03.$memcache->connect('localhost', 11211);
04.$memcache->set('test_item', 8); 4 );
06.echo $memcache->decrement('test_item', 7);
07.// 5 を表示します

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。