PHP オペコード キャッシュと Memcache キャッシュの使用ガイド
リクエスト--->.php--->辞書スキャン--->解析--->オペコードの作成--->オペコードの処理--->レスポンス
PHP スクリプトの内容が変更されない場合でも、Zend エンジンはファイルのオペコードを再作成する必要があります。
--->キャッシュ--->キャッシュされたオペコードの読み取り--->オペコードの処理--->応答
リクエスト--->.php
。
詳細については、 PHP の APC キャッシュの詳細な紹介 (学習と構成) を参照してください。
詳細については、PHP XCache キャッシュの使用法 を参照してください。
Memcache 関数ライブラリは PECL (PHP Extension Community Library) にあり、その主な機能は大容量メモリ データの一時記憶領域を構築することです。
memcache は、通信会話 (session_handler) の処理も提供します。
Memcache モジュールの詳細については、http://www.danga.com/memcached/ を参照してください。
Memcache Functions 関数リスト
参考 http://www.php.net/manual/zh/function.Memcache-add.php 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 - 既存のキーを上書きします Memcache::set - 値を追加するか、値がすでに存在する場合は上書きします Memcache::setCompressThreshold - 特定のサイズを超えるデータを圧縮します Memcache::setServerParams - 実行時にサーバーパラメータを変更します |
1. サーバーをオブジェクトに追加します (注: addServer にはサーバーに接続するアクションがないため、memcache プロセスが開始されていない場合、addServer を正常に実行すると true が返されます)
//参数 //@param string $host 服务器域名或IP //@param int $port 端口号,默认值11211 //@param bool $persistent 是否使用常链接,默认TURE //@param int $weight 权重,在多个服务器设置中占的比重 //@param int $timeout 连接服务器失效的秒数,修改默认值 1 时要三思,有可能失去所有缓存方面的优势导致连接变得很慢 //@param int $retry_interval 服务器连接失败时的重试频率,默认是 15 秒一次,如果设置为 -1 将禁止自动重试,当扩展中加载了 dynamically via dl() 时,无论本参数还是常连接设置参数都会失效。 每一个失败的服务器在失效前都有独自的生存期,选择后端请求时会被跳过而不服务于请求。一个过期的连接将成功的重新连接或者被标记为失败的连接等待下一次 重试。这种效果就是说每一个 web server 的子进程在服务于页面时的重试连接都跟他们自己的重试频率有关。 //@param bool $status 控制服务器是否被标记为 online,设置这个参数为 FALSE 并设置 retry_interval 为 -1 可以使连接失败的服务器被放到一个描述不响应请求的服务器池子中,对这个服务器的请求将失败,接受设置为失败服务器的设置,默认参数为 TRUE,代表该服务器可以被定义为 online。 //@param callback $failure_callback 失败时的回调函数,函数的两个参数为失败服务器的 hostname 和 port bool Memcache::addServer ( string $host [, int $port [, bool $persistent [, int $weight [, int $timeout [, int $retry_interval [, bool $status [, callback $failure_callback ]]]]]]] )
2. memcache サーバーに接続します
//参数 //@param string $host 服务器域名或ip //@param int $post 服务器tcp端口号,默认值是11211 //@param $timeout 连接memcache进程的失效时间,在修改它的默认值1的时候要三思,以免失去所有memcache缓存的优势导致连接变得很慢 //@return bool bool Memcache::connect ( string $host [, int $port [, int $timeout ]] )
/* procedural API */ $memcache_obj = memcache_connect(‘memcache_host‘, 11211); /* OO API */ $memcache = new Memcache; $memcache->connect(‘memcache_host‘, 11211);
bool Memcache::pconnect ( string $host [, int $port [, int $timeout ]] )
bool Memcache::close ( void )
/* procedural API */ $memcache_obj = memcache_connect(‘memcache_host‘, 11211); /* do something here .. */ memcache_close($memcache_obj); /* OO API */ $memcache_obj = new Memcache; $memcache_obj->connect(‘memcache_host‘, 11211); /* do something here .. */ $memcache_obj->close();
//参数 //@param string $key 缓存数据的键 其长度不能超过250个字符 //@param mixed $var 值,整型将直接存储,其他类型将被序列化存储,其值最大1M //@param int $flag 是否使用zlib压缩,当flag=MEMCACHE_COMPRESSED的时候,数据很小的时候不会采用zlib压缩,只有数据达到一定大小才对数据进行压缩 //@param int $expire 过期时间,0为永久不过期,可使用 unix 时间截格式或距离当前时间的秒数,设为秒数时不能大于2592000(30天) //@return 成功返回 TRUE,失败返回 FALSE,如果这个键已经存在,其他方面memcache:;add()的行为与memcache::set相似 bool Memcache::add ( string $key , mixed $var [, int $flag [, int $expire ]] )
$memcache_obj = memcache_connect("localhost", 11211); memcache_add($memcache_obj, 'var_key', 'test variable', false, 30); $memcache_obj->add('var_key', 'test variable', false, 30);
//参数 //@param string $key 缓存数据的键 //@param mixed $var 值,整型将直接存储,其他类型将被序列化存储,其值最大为1M //@param int $flag 是否使用 zlib 压缩 ,当flag=MEMCACHE_COMPRESSED的时侯,数据很小的时候不会采用zlib压缩,只有数据达到一定大小才对数据进行zlib压缩。(没有具体的测试数据进行压缩的最小值是多少) //@param int $expire 过期时间,0 为永不过期,可使用 unix 时间戳格式或距离当前时间的秒数,设为秒数时不能大于 2592000(30 天) bool Memcache::replace ( string $key , mixed $var [, int $flag [, int $expire ]] )
$memcache_obj = memcache_connect("localhost", 11211); /* procedural API */ memcache_replace($memcache_obj, "test_key", "some variable", FALSE, 30); /* OO API */ $memcache_obj->replace("test_key", "some variable", FALSE, 30);
//参数 //@param string $key 缓存数据的键, 其长度不能超过250个字符 //@param mixed $var //@param int $flag //@param int $expire bool Memcache::set ( string $key , mixed $var [, int $flag [, int $expire ]] )
$memcache_obj = memcache_connect("localhost", 11211); /* set value of item with key ‘var_key‘ using 0 as flag value, compression is not used expire time is 30 second */ memcache_set($memcache_obj, ‘var_key‘, ‘some variable‘, 0, 30); echo memcache_get($memcache_obj, ‘var_key‘);