ホームページ  >  記事  >  バックエンド開発  >  PHP操作memcache

PHP操作memcache

WBOY
WBOYオリジナル
2016-06-23 14:33:26784ブラウズ

1. はじめに

memcache モジュールは、特に動的 Web プログラムの設計時にデータベース アクセスを削減するために、メモリ キャッシュ用の手続き型プログラムとオブジェクト指向の便利なインターフェイスを提供する効率的なデーモン プロセスです。

memcache は、通信会話 (session_handler) の処理も提供します。

Memcache モジュールの詳細については、http://www.danga.com/memcached/ を参照してください。

1.1. php.ini の memcache 設定項目のリスト php.ini の memcache 設定項目のリスト memcache.max_failover_attempts"20"PHP_INI_ALL memc ache 2.1.0 以降で利用可能.memcache.chunk_size"8192" PHP_INI_ALLmemcache 2.0.2.memcache.default_port"11211"PHP_INI_ALLmemcache 2. 0.2.memcache.hash_strategy「標準」 PHP_INI_ALLmemcache 2.2.0 以降で利用可能memcache.hash_function"crc32"PHP_INI_ALL memcache 2.2.0 以降で利用可能 session.save_handler「ファイル」PHP_INI_ALLサポートされていますmemcache 2.1.2 以降session.save_path""PHP_INI_ALLPHP_INI について _* 定数の詳細と定義については、 PHP マニュアルの php.ini 設定オプション。
名前 デフォルト値 変数かどうか 変更ログ
memcache.allow_failover 「1」 PHP_INI_ALL memcache 2.0.2 以降で利用可能
以降で利用可能
以降で利用可能
memcache 2.1.2 以降でサポート
1.2. 以下は設定項目の簡単な説明です

memcache.allow_failover Boolean

エラーが発生したときに他のサーバーに透過的にフェイルオーバーするかどうか (注: フェイルオーバーは動詞です)。

memcache.max_failover_attempts integer

サーバー設定の数を定義し、データを取得します。memcache.allow_failover と組み合わせてのみ使用されます。

memcache.chunk_size integer

データは指定されたサイズ (chunk_size) のチャンクに分割されて送信されます。この値 (chunk_size) が小さいほど、より多くの書き込み操作が必要になります。その他の原因不明の速度低下が見つかった場合は、お試しください。この値を 32768 に増やします。

memcache.default_port string

memcache サーバーに接続するとき、ポートが指定されていない場合は、このデフォルトの TCP ポートが使用されます。

memcache.hash_strategy string

キーをサーバーにマッピングするときに使用する戦略を制御します。この値を一貫して設定すると、ハッシュ アルゴリズムを一貫して使用できるようになり、サーバーがプールへの変数の追加または削除を受け入れるときに再マッピングされなくなります。古い戦略を使用する場合は、この値を標準の結果に設定します。

memcache.hash_function string

サーバーへのキー マッピング プロセスにどの hsah 関数が適用されるかを制御します。デフォルト値「crc32」は CRC32 アルゴリズムを使用し、「fnv」は FNV-1a アルゴリズムの使用を示します。

session.save_handler string

この値を memcache に設定することで、通信会話処理 (セッション ハンドラー) に memcache を使用するかどうかを決定します。

session.save_path string

通話ストレージに使用される各サーバー リンクの区切り記号を定義します (例: "tcp://host1:11211, tcp://host2:11211")。

各サーバー リンクには、Memcache::addServer() を使用してサーバーを追加するのと同様に、サーバーによって受け入れられるパラメーターを含めることができます。例: "tcp://host1:11211?persistent=1&weight=1&timeout=1& retry_interval=15 」。

1.3. memcache 定数リスト

memcache 定数リスト

名前 タイプ 説明 MEMCACHE_COMPRESSEDinteger Memcache::set( を使用するときに調整するために使用) )、::add()、および Memcache: :いくつかの関数の replace() 圧縮率。 MEMCACHE_HAVE_SESSIONinteger 通信セッション ハンドラーがその値の使用を許可されている場合は 1、それ以外の場合は値は 0 です。
2Memcache 関数の関数一覧 2.1.Memcache::connect2.1.1. 説明

bool Memcache :: connect ( string $host [ , int $port [ , int $timeout ]] )

memcache サーバーに接続します

2.1.2.パラメータ

$host(string) サーバーのドメイン名または IP

$port(int) サーバーの TCP ポート番号、デフォルト値は 11211 です

$timeout 接続 memcache プロセスの有効期限。デフォルト値の変更する前によく考えてください。避けるべき 1 memcache キャッシュの利点がすべて失われ、接続が非常に遅くなります。

2.1.3. 戻り値

成功した場合は true を返し、失敗した場合は false を返します

2.1.4. 例

4509130de69528e58f82761011c56a13

2.4 。 Memcache :: addserver2.4.1. 説明
BOOL MEMCACHE :: AddServer (String $ Host [, int $ PORT [, BOOL $ Persisteent [, Int $ Weight [, Int $ Timeout [, Int $ Retry_interval [, BOOL $ status [, callback $failure_callback ]]]]]] )

コードをコピー


サーバーをオブジェクトに追加します (注: addServer にはサーバーに接続するアクションがないため、memcache プロセスが開始されていない場合、addServer を実行すると成功した場合は true を返します)
2.4.2. パラメータ
host

から

まで

から まで --luse-to-use

重み、複数サーバーでの割合。 OTimeout サーバーへの接続に失敗するまでの秒数をデフォルト値 1 に変更すると、結果として接続が非常に遅くなる可能性があります。自動再試行は無効になります。dl() によって拡張機能が動的にロードされる場合、このパラメータと常時接続設定パラメータは両方とも無効になります。

障害が発生した各サーバーには、障害が発生する前に 1 つの存続期間があります。バックエンド要求を選択すると、その要求は処理されずにスキップされます。期限切れになった接続は、正常に再接続されるか、次回の再試行まで失敗としてマークされます。この効果は、ページを提供するときの各 Web サーバーの子プロセスの再試行接続が、独自の再試行頻度に関連していることを意味します。制御ステータス コントロール サーバーがオンラインとしてマークされているかどうかに関係なく、このパラメーターを false に設定し、RETRY_INTERVAL を -1 に設定して、障害が発生したサーバーに接続できるサーバーを要求に応答しないサーバー プールに配置します。このサーバーは失敗します。デフォルトのパラメーターは TRUE です。これは、サーバーをオンラインとして定義できることを意味します。

failure_callback 関数の 2 つのパラメータは、失敗したサーバーのホスト名とポートです。

成功した場合は TRUE、失敗した場合は FALSE を返します。

注: addServer 関数をテストするときは、主にそのパラメーター retry_interval と status をテストしました

c0d9b230247acbdd88827bc483a255db addServer('localhost' , 11211 , true , 1 , 1 , 15 , true ); // retrt_interval=15

$is_set = $mem -> China ');

?>

コードをコピー


上記の例では、localhost サーバーがダウンするか、memcache デーモンがクラッシュすると、リクエストが接続に失敗してから 15 秒後にサーバーへの接続が自動的に再試行されます。つまり、リクエストがある限り、15 秒以内にサーバーへの接続が試行されますが、各サーバー接続の再試行は独立しています。たとえば、一度に 2 つのサーバーを追加しました。1 つは localhost で、もう 1 つは 172.16.100.60 です。それぞれの接続が失敗した時点から数えて、リクエストがある限り、15 秒ごとにそれぞれのサーバーに接続します。それぞれのサーバー。
2.4.4.2. retry_interval とステータスの組み合わせ

76e5d414047e5bb4157f11f9f7c5b932

コードをコピー
2.6.Memcache::replace2.6.1.Description 

bool Memcache :: replace ( string $key ,mixed $var [ , int $flag [ , int $expire ]] )

指定された既存のキーのキャッシュ変数の内容を置き換えます

2.6.2. パラメーター key 、他の型はシリアル化されて保存され、最大値は1M

フラグを使用するかどうかzlib 圧縮、flag=MEMCACHE_COMPRESSED の場合、データが非常に小さい場合は zlib 圧縮は使用されず、データが特定のサイズの zlib 圧縮に達した場合にのみデータが圧縮されます。 (最小値を圧縮するための特定のテスト データはありません)

expire 有効期限、0 は期限切れがないことを意味します。UNIX タイムスタンプ形式または現在時刻からの秒数を使用できます。秒に設定した場合、それより大きくすることはできません2592000 (30 日) より

2.6.3. 戻り値

成功した場合は TRUE、失敗した場合は FALSE を返します。

2.6.4. 例

cb0a0998fdb0fdef2bb3a59941dbdea0 set('var_key' , 'いくつかの非常に大きな変数' , MEMCACHE_COMPRESSED , 50 ); $memcache_obj -> get('var_key');
?> コードをコピー

2.8.Memcache::get2.8.1.Description 
string Memcache::get ( string $key [, int &$flags ])
Array Memcache :: get (ARRAY $ Keys [, Array & $ Flags])

キーのキー キャッシュ値を取得します

2.8.2. キャッシュ値を取得した結果のフラグです。変数に格納されます2.8.3. 戻り値

指定されたキーのキャッシュされた変数の内容を返すか、失敗した場合、または変数の値が存在しない場合は FALSE を返します

送信キー配列にキーが存在しない場合それ以外の場合、返される結果は空の配列です。

25aaf8f6c837dbff1c27af4c1045516f get('some_key'); /*

キーの配列をパラメーターとして使用することもできます

そのような項目がサーバーで見つからなかった場合、結果の

配列は返されません。そのようなキーを含めます

*/

/* 手続き型 API */

$memcache_obj = memcache_connect('memcache_host' , 11211 );
$var = memcache_get ( $memcache_obj , Array ( 'some_key' , 'another_key')); / some_key が存在しない場合、another_key が存在しない $var = array();
// some_key が存在する場合、another_key が存在する $var = array('some_key'=>'キャッシュ値', 'another_key'=>'キャッシュ値') ;
/* OO API */
$memcache_obj = 新しい Memcache;
$var = $memcache_obj -> ));
?>

コードをコピー

2.9.Memcache::delete2.9.1.説明

bool Memcache :: delete ( string $key [, int $timeout ] )


特定のキャッシュを削除します変数
2.9.2. パラメータ
key キャッシュされたキーの値は、前の 2 つの値と等しい場合、php で警告エラーが発生します。

timeout この項目が 0 に等しい場合、この項目はすぐに削除されます。それ以外の場合、この項目は 30 秒以内に削除されます。
2.9.3.
成功した場合は TRUE を返し、失敗した場合は FALSE を返します。

2.9.4. 例

2e55bcaf1f49bd4e0923b4656c9f053a

コードをコピー

2.10.Memcache::flush2.10.1.Description

bool Memcache ::lush ( void )

清空所有缓存内容,不是真的删除缓存的内容,只是使所有变量的缓存过期,使内存中的内容被重写

2.10.2.返回值

成功返回 TRUE,失败返回 FALSE。

2.10.3.范例

7b8bd014a8dad8aa8a37fc08c78c710c connect(‘memcache_host‘ ,  11211 );
$memcache_obj -> flush ();
?>

复制代码

2.11.Memcache::getExtendedStats2.11.1.说明

array  Memcache :: getExtendedStats ([  string  $type  [ ,  int  $slabid  [ ,  int  $limit  ]]] )

获取所有服务器扩展静态信息 

2.11.2.参数

type       静态信息类型,有效值包括{reset, malloc, maps, cachedump, slabs, items, sizes},依照一定规则协议这个可选参数是为了方便开发人员查看不同类别的信息而输入的标题

slabid   用于按指定类型联合设置 cache 堆为有效的片到堆中。缓存堆被被命令绑定到服务器上并被严格的用于调试用途

limit      用于按指定类型联合设置 cache 堆为输入的数字所限制的大小到堆,默认值为 100 

2.11.3.返回值

返回一个由服务器扩展静态信息二维数组,失败时返回 FALSE 

2.11.4.范例

1a3fcf841267031f19fc933dbbb6a9a0 addServer(‘memcache_host‘ ,  11211 );
$memcache_obj -> addServer(‘failed_host‘ ,  11211 );
$stats  =  $memcache_obj -> getExtendedStats();  print_r ( $stats );
?>

复制代码

输出结果

Array (
[memcache_host : 11211 ]  =>  Array (
[pid]  =>  3756
[uptime]  =>  603011
[ time ]  =>  1133810435
[version]  =>  1.1 . 12
[rusage_user]  =>  0.451931
[rusage_system]  =>  0.634903
[curr_items]  =>  2483
[total_items]  =>  3079
[bytes]  =>  2718136
[curr_connections]  =>  2
[total_connections]  =>  807
[connection_structures]  =>  13
[cmd_get]  =>  9748
[cmd_set]  =>  3096
[get_hits]  =>  5976
[get_misses]  =>  3772
[bytes_read]  =>  3448968
[bytes_written]  =>  2318883
[limit_maxbytes]  =>  33554432
) ,
[failed_host : 11211 ]  =>
)

复制代码

2.12.Memcache::getStats2.12.1.说明  

array  Memcache :: getStats ([  string  $type  [ ,  int  $slabid  [ ,  int  $limit  ]]] )

获取最后添加服务器静态信息 

2.12.2.参数

type       静态信息类型,有效值包括{reset, malloc, maps, cachedump, slabs, items, sizes},依照一定规则协议这个可选参数是为了方便开发人员查看不同类别的信息而输入的标题

slabid   用于按指定类型联合设置 cache 堆为有效的片到堆中。缓存堆被被命令绑定到服务器上并被严格的用于调试用途

limit      用于按指定类型联合设置 cache 堆为输入的数字所限制的大小到堆,默认值为 100 

2.12.3.返回值

返回一个服务器静态信息数组,失败时返回 FALSE 

2.13.Memcache::getServerStatus2.13.1.说明

int Memcache :: getServerStatus (  string  $host  [ ,  int  $port  ] )

通过输入的 host 及 port 来获取相应的服务器信息

2.13.2.参数

host 服务器域名或 IP

port 端口号,默认为 11211

2.13.3.返回值

返回服务器状态,0 为失败,其他情况返回非 0 数字 

2.13.4. 例

& & lt ;? PHP

/ * OO API * /
$ Memcache = New Memcache -& gt;
/* 手続き型 API */ = memcache_connect('memcache_host' , 11211 );
echo memcache_get_server_status( $memcache , 'memcache_host' , 11211 ) ; コードをコピー

2.14.Memcache::getVersion2 .14.1. 説明

文字列 Memcache :: getVersion (void)

サーバーのバージョン番号情報を取得します

2.14.2. 戻り値 成功した場合はサーバーのバージョン番号文字列を返し、失敗した場合は FALSE を返します

2.14.3. php

/* OO API */

$memcache = new Memcache; $memcache -> getVersion();

$memcache = memcache_connect('memcache_host' , 11211 );

echo memcache_get_version( $memcache );

コードをコピー

2.15.Mem cache::setCompressThreshold

bool Memcache: : setCompressしきい値 ( int $threshold [ , float $ min_ Savings ] )


圧縮制限を設定します
2.15.2. パラメータ
threshold は自動圧縮を制御する変数長の最小値を設定します

min_ Savings は最小圧縮率を指定します。値は 0 ~ 1 の間である必要があります。デフォルトは 0.2 で、圧縮率 20% を表します

2.15.3。 戻り値

成功した場合は TRUE、失敗した場合は FALSE を返します。 2.15.4. 例

74141aa45fbd6a0b0dca8b5d08c3fcf6 addServer(‘memcache_host‘ , 11211 , FALSE , 1 , 1 , - 1 , FALSE );
// サーバーをオンラインに戻します
$memcache -> setServerParams(‘memcache_host‘ , 11211 , 1 , 15 , TRUE , ‘_callback_memcache_failure‘);
/* 手続き型 API */
$memcache_obj = memcache_connect(‘memcache_host‘ , 11211 );
memcache_set_server_params( $memcache_obj , ‘memcache_host‘ , 11211 , 1 , 15 , TRUE , ‘_callback_memcache_failure‘);
?>

复制代

2.17.Memcache::increment2.17.1.说明

int Memcache :: increment ( string $key [ , int $value ] )

给指定キーの存在1 つの増加値、その量がそうでない場合数字は数字に変換されず、この増加値はその変化量に加えられるため、新しい変化量は存在せず、圧縮保存された量に対しては、対応する取得方法が失われるため、この関数を使用する必要はありません。

2.17.2. パラメータ

key が保存する鍵

var 値、整型は直接保存され、その他の型は順序化されて保存されます

2.17.3. 値を返す

成功した場合は新しい値を返し、失敗した場合は FALSE を返します。

2.17.4.范の例

php
/* 手続き型 API */
$memcache_obj = memcache_connect(‘memcache_host‘ , 11211 );
/* カウンターを 2 ずつ増分します */
$current_value = memcache_increment( $memcache_obj , ‘counter‘ , 2 );
/* OO API */
$memcache_obj = 新しい Memcache;
$memcache_obj -> connect('memcache_host' , 11211 );
/* カウンターを 3 ずつインクリメントします */
$current_value = $memcache_obj ->インクリメント('カウンター' , 3 );
?>

复制代

2.18.Memcache::decrement2.18.2.说明

int Memcache :: decrement ( string $key [ , int $value ] )

给指定キー増分操作による保存量同様に、この値は数値に変換された後に減算され、新しい値は 0 より小さくならず、圧縮保存された量に対してこの関数を対応する値として使用する必要はありません。

2.18.2. パラメータ

key が保存する鍵

var 値、整型は直接保存され、その他の型は順序化されて保存されます

2.18.3. 値を返す

正常に新しい量を返す、失敗FALSE を返します。

2.18.4.例

8fbdd96e84a9726113c8a7024d1a20bc connect('memcache_host' , 11211 );
/* 項目を 3 ずつ減らす */
$new_value = $memcache_obj -> decrement(‘test_item‘ , 3 );
?>

复制代码

2.19.memcache_debug2.19.1.说明

bool memcache_debug ( bool $on_off )

memcache の設定が正しいかどうかPHP のインストール時に使用されているかどうかの影響を受ける -- 値は TRUE または FALSE です。

2.19.2.パラメータ

on_off は、評価モードが開始されているかどうかを設定します。TRUE は開始され、FALSE は停止します。返還

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