Memcached - PHP のインストールと使用法
Memcached をダウンロード:
root@tonyvicky:# ./configure --prefix=/usr/local/memcached インストール後にサービスを再起動します:
http://danga.com/memcached/download.bml
インストール:
libevent をダウンロードしてインストールします。すでにインストールしている場合はスキップできます:
ダウンロードアドレス: http://www.monkey.org/~provos/libevent/
Memcached For PHP モジュールのダウンロード アドレス:
http://pecl.php.net/package/memcache
http://cn.php.net/manual/zh/ref.memcache.php
Memcached サーバーをインストールします
root@tonyvicky:# tar vxzf memcached-1.1.12.tar.gz
root@tonyvicky:# cd memcached-1.1.12
root@tonyvicky:# tar vxzf memcached-1.1.12.tar.gz
root@tonyvicky:# cd memcached-1.1.12
root@tonyvicky:# ./configure --prefix=/usr/local/memcached
root@tonyvicky:# make
root@tonyvicky:# make install
root@tonyvicky:# インストールを行う
root@tonyvicky:# cd /usr/local/memcached/bin
root@tonyvicky:# ./memcached -d -m 50 -p 11211 -u root
root@tonyvicky:# cd /usr/local/memcached/bin
root@tonyvicky:# ./memcached -d -m 50 -p 11211 -u root
root@tonyvicky:# tar vxzf memcache-1.5.tgz root@tonyvicky:# cd memcache-1.5 root@tonyvicky:# /usr/local/php/bin/phpize root@tonyvicky:# ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir root@tonyvicky:# make root@tonyvicky:# make install |
PHP モジュールをインストールします
root@tonyvicky:# tar vxzf memcache-1.5.tgz
root@tonyvicky:# /usr/local/php/bin/phpize root@tonyvicky:# ./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config --with-zlib-dir
root@tonyvicky:# インストールを行う |
extension_dir = "/usr/local/php/lib/php/extensions/no-debug-non-zts-20050922/" |
php.ini を変更します
extension=memcache.so |
インストールが完了しました。テスト:
?
$memcache
?=?
新しい
?Memcache;?
//memcache オブジェクトを作成します
?
?
->接続(
'ローカルホスト'
、?11211)?
または
?
死ね
?(
「接続できませんか?」
);?
//Memcached サーバーに接続します
?
$memcache
->set(
'キー'
、?
「テスト」
);?
//変数をメモリに設定します。名前は key、値は test
?
? $get_value ?=? $memcache ->get( 'キー' );? //メモリからキー値を取得します ??
? エコー
?
$get_value
;?
?> Memcache のデフォルト関数
connect(ip, port)
set(キー, 値)? データ圧縮: set(キー, 値,?MEMCACHE_COMPRESSED
)
get(key)
インクリメント
、設定と同じ (追加のカウント機能があるようですが、まだ試していません)
getStats() は現在のメモリ使用量を返します (配列を返します) print_r($memcached->getStats());
フラッシュしますか? メモリ使用量をクリアします。
コード例 (chinaunix から):
//アクセス統計 ??
$memcache ?=? 新しい ?Memcache;??
$memcache
->connect('localhost',?11211)?
または
?
死ね
?(
「接続できませんか?」
);
もしも
(
$s
=
$memcache
->get(’a’))?{??
????$s
=
$s
+1;??
????$memcache
->set('a',
$s
);??
}?
その他
??
$memcache
->set('a',1);
? エコー ?’アクセス結果は次のとおりです:’. $s ;??
?>
$memcache
?=?
新しい
?Memcache;?
$memcache
->connect('localhost',?11211)?
または
?
死ね
?(
「接続できませんか?」
);??
?
場合
(
$s
=
$memcache
->increment(’a’,1))?{??
????エコー
?
$s
;??????
}?
その他
??
$memcache
->set('a',1);
?
?>??
?データ圧縮 PHP コード
$memcache
?=?
新しい
?Memcache;??
$memcache
->connect('localhost',?11211)?
または
?
死ね
?(
「接続できませんか?」
); ?
$test
=(
str_repeat
('ジェットウォン',100000));??
$memcache
->set('b',(
$テスト
));
?> ?
圧縮を使用します: ??
?
$memcache
?=?
新しい
?Memcache ?
$memcache
->connect('localhost',?11211)?
または
?
死ね
?(
「接続できませんか?」
); ?
$test
=(
str_repeat
('ジェットウォン',100000));
$memcache
->set('b',(
$テスト
),MEMCACHE_COMPRESSED);
?>??
メモリの更新と PHP コードのクリーンアップ
?
$memcache
?=?
新しい
?Memcache;?
$memcache
->connect('localhost',?11211)?
または
?
死ね
?(
「接続できませんか?」
);??
?
/*設定値*/
?
$ステータス
?=?
$memcache
->getStats();??
エコー
?'設定前のメモリ使用量'.
$ステータス
['バイト'].'
エコー
?’設定後’;??
用
(
$i
=0;
$i
$i
++)?{??
????
?????? $memcache
->set(’b’.
$i
,rand(1,99));??????
??? ?????? エコー
?’
}
?
/*設定値を表示*/
??
$ステータス
?=?
$memcache
->getStats();
?
エコー
?’
削除
以前のメモリ使用量'.
$ステータス
['バイト'].' エコー
?’ 用
(
$i
=0;
$i
$i
++)?{??
?? ? $memcache?
->
削除
('b'.
$i
);??????
???エコー
?’ }??
?
/*フラッシュの使用状況を確認*/
?
$ステータス
?=?
$memcache
->getStats();??
エコー
?’ を使用してください
フラッシュ
以前のメモリ使用量'.
$ステータス
['バイト'].' エコー
?’ を使用してください
フラッシュ
状況:';
用
(
$i
=0;
$i
$i
++)?{??
????
?? $memcache
->set(’b’.
$i
,rand(1,99));??????
????
??
?’ }??
$memcache
->
フラッシュ
();
エコー
?’
フラッシュ
の後:';?
用
(
$i
=0;
$i
$i
++)?{?????????
??
エコー?
?’
}??
$ステータス
?=?
$memcache
->getStats();
エコー
?’
フラッシュ
ポストメモリ使用量。
$ステータス
['バイト'].' ?>
メモリ過剰テスト PHP コード
$memcache
?=?
新しい
?Memcache;??
$memcache
->connect('localhost',?11211)?
または
?
死ね
?(
「接続できませんか?」
);??
??
//約 600K
?
$test1
=?
str_repeat
('ジェットリー',100000);??
//約 600K
??
$test2
=?
str_repeat
('ジェットリー',100000);??
//約 600K
??
$test3
=?
str_repeat
('ジェット・リー',200000);??
//約 600K
?
$test4
=?
str_repeat
('Lianjie Li',100000);??
//200K
?
$test5
=?
file_get_contents
(’http:
//img.pconline.com.cn/images/photoblog/2988177/20068/4/1154688770042_mthumb.JPG’);
$test6
=?
file_get_contents
(’http:
//img.pconline.com.cn/images/photoblog/1767557/20069/28/1159417108902_mthumb.jpg’);
??
? 用
(
$i
=1;
$i
$i
++)?{??
? ?? $j
='テスト'。
$i
;??
?? ?? 場合
(
$memcache
->set(
$j
、$
$j
)) ?? {??
?????? ? ? ? ? ? エコー
?
$j
.'->設置成功 ?? ?????? $ステータス
?=?
$memcache
->getStats();
??
?????? エコー
?’内存:’.
$ステータス
['バイト'].'
?? }
その他
?{
??
??????エコー
?
$j
.'->セットアップに失敗しました ??
??? } ?
}?
?>
?
//設定
?
もしも
(
$data
?=?
$memcache
->get(’k’,
$v
))?{??
???
?? // データを表示します
??
???
その他
?{?
???$データ
?=?get_from_database;?
//データソースを取得
??
?? なら?
(!
$memcache
->set(’k’,
$data
)、?MEMCACHE_COMPRESSED)?
//設定開始
??
? ? log();????//失敗、失敗情報を記録します???
??
}
?>
';
’.
$i
.’->’.
$memcache
->get(’b’.
$i
);
';??
開始
削除
’;??
’.
$i
.’->’.
$memcache
->get(’b’.
$i
);??
';??
’.
$i
.’->’.
$memcache
->get(’b’.
$i
);????
?
’。
$i
.’->’.
$memcache
->get(’b’.
$i
);
';??
';??
';
';