国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

??
PHP如何使用Memcached,PHP使用Memcached
您可能感興趣的文章:
? php教程 php手冊 PHP如何使用Memcached,PHP使用Memcached

PHP如何使用Memcached,PHP使用Memcached

Jun 13, 2016 am 08:42 AM
memcached php

PHP如何使用Memcached,PHP使用Memcached

一、memcached 簡介

memcached是高性能的分布式內(nèi)存緩存服務器。一般的使用目的是,通過緩存數(shù)據(jù)庫查詢結果,減少數(shù)據(jù)庫訪問次數(shù),以提高動態(tài)Web應用的速度、提高可擴展性。它可以應對任意多個連接,使用非阻塞的網(wǎng)絡IO。由于它的工作機制是在內(nèi)存中開辟一塊空間,然后建立一個HashTable,Memcached自管理這些HashTable。

二、memcached 安裝

首先是下載 memcached 了,目前最新版本是 1.1.12,直接從官方網(wǎng)站即可下載到 memcached-1.1.12.tar.gz。除此之外,memcached 用到了 libevent,我下載的是 libevent-1.1a.tar.gz。

接下來是分別將 libevent-1.1a.tar.gz 和 memcached-1.1.12.tar.gz 解開包、編譯、安裝:
# tar -xzf libevent-1.1a.tar.gz # cd libevent-1.1a# ./configure --prefix=/usr# make# make install# cd .. # tar -xzf memcached-1.1.12.tar.gz# cd memcached-1.1.12 # ./configure --prefix=/usr# make# make install
安裝完成之后,memcached 應該在 /usr/bin/memcached。

三、運行 memcached 守護程序

運行 memcached 守護程序很簡單,只需一個命令行即可,不需要修改任何配置文件(也沒有配置文件給你修改 ):
/usr/bin/memcached -d -m 128 -l 192.168.1.1 -p 11211 -u httpd
參數(shù)解釋:

-d 以守護程序(daemon)方式運行 memcached;-m 設置 memcached 可以使用的內(nèi)存大小,單位為 M; -l 設置監(jiān)聽的 IP 地址,如果是本機的話,通??梢圆辉O置此參數(shù);-p 設置監(jiān)聽的端口,默認為 11211,所以也可以不設置此參數(shù); -u 指定用戶,如果當前為 root 的話,需要使用此參數(shù)指定用戶。

當然,還有其它參數(shù)可以用,man memcached 一下就可以看到了。

四、memcached 的工作原理

首先 memcached 是以守護程序方式運行于一個或多個服務器中,隨時接受客戶端的連接操作,客戶端可以由各種語言編寫,目前已知的客戶端 API 包括 Perl/PHP/Python/Ruby/Java/C#/C 等等。PHP 等客戶端在與 memcached 服務建立連接之后,接下來的事情就是存取對象了,每個被存取的對象都有一個唯一的標識符 key,存取操作均通過這個 key 進行,保存到 memcached 中的對象實際上是放置內(nèi)存中的,并不是保存在 cache 文件中的,這也是為什么 memcached 能夠如此高效快速的原因。注意,這些對象并不是持久的,服務停止之后,里邊的數(shù)據(jù)就會丟失。

五、PHP 如何作為 memcached 客戶端

有兩種方法可以使 PHP 作為 memcached 客戶端,調(diào)用 memcached 的服務進行對象存取操作。

第一種,PHP 有一個叫做 memcache 的擴展,Linux 下編譯時需要帶上 –enable-memcache[=DIR] 選項,Window 下則在 php.ini 中去掉 php_memcache.dll 前邊的注釋符,使其可用。

除此之外,還有一種方法,可以避開擴展、重新編譯所帶來的麻煩,那就是直接使用 php-memcached-client。

本文選用第二種方式,雖然效率會比擴展庫稍差一些,但問題不大。

六、PHP memcached 應用示例

首先 下載 memcached-client.php,在下載了 memcached-client.php 之后,就可以通過這個文件中的類“memcached”對 memcached 服務進行操作了。其實代碼調(diào)用非常簡單,主要會用到的方法有 add()、get()、replace() 和 delete(),方法說明如下:

復制代碼 代碼如下:
add ($key, $val, $exp = 0)

往 memcached 中寫入對象,$key 是對象的唯一標識符,$val 是寫入的對象數(shù)據(jù),$exp 為過期時間,單位為秒,默認為不限時間;

get ($key)

從 memcached 中獲取對象數(shù)據(jù),通過對象的唯一標識符 $key 獲??;

復制代碼 代碼如下:
replace ($key, $value, $exp=0)

使用 $value 替換 memcached 中標識符為 $key 的對象內(nèi)容,參數(shù)與 add() 方法一樣,只有 $key 對象存在的情況下才會起作用;

復制代碼 代碼如下:
delete ($key, $time = 0)

刪除 memcached 中標識符為 $key 的對象,$time 為可選參數(shù),表示刪除之前需要等待多長時間。

下面是一段簡單的測試代碼,代碼中對標識符為 'mykey' 的對象數(shù)據(jù)進行存取操作:

<&#63;php
// 包含 memcached 類文件
require_once('memcached-client.php');
// 選項設置
$options = array(
'servers' => array('192.168.1.1:11211'), //memcached 服務的地址、端口,可用多個數(shù)組元素表示多個 memcached 服務
'debug' => true, //是否打開 debug
'compress_threshold' => 10240, //超過多少字節(jié)的數(shù)據(jù)時進行壓縮
'persistant' => false //是否使用持久連接
);
// 創(chuàng)建 memcached 對象實例
$mc = new memcached($options);
// 設置此腳本使用的唯一標識符
$key = 'mykey';
// 往 memcached 中寫入對象
$mc->add($key, 'some random strings');
$val = $mc->get($key);
echo "n".str_pad('$mc->add() ', 60, '_')."n";
var_dump($val);
// 替換已寫入的對象數(shù)據(jù)值
$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);
&#63;> 

是不是很簡單,在實際應用中,通常會把數(shù)據(jù)庫查詢的結果集保存到 memcached 中,下次訪問時直接從 memcached 中獲取,而不再做數(shù)據(jù)庫查詢操作,這樣可以在很大程度上減輕數(shù)據(jù)庫的負擔。通常會將 SQL 語句 md5() 之后的值作為唯一標識符 key。下邊是一個利用 memcached 來緩存數(shù)據(jù)庫查詢結果集的示例(此代碼片段緊接上邊的示例代碼):

<&#63;php
$sql = 'SELECT * FROM users';
$key = md5($sql); //memcached 對象標識符
if ( !($datas = $mc->get($key)) ) {
// 在 memcached 中未獲取到緩存數(shù)據(jù),則使用數(shù)據(jù)庫查詢獲取記錄集。
echo "n".str_pad('Read datas from MySQL.', 60, '_')."n";
$conn = mysql_connect('localhost', 'test', 'test');
mysql_select_db('test');
$result = mysql_query($sql);
while ($row = mysql_fetch_object($result))
$datas[] = $row;
// 將數(shù)據(jù)庫中獲取到的結果集數(shù)據(jù)保存到 memcached 中,以供下次訪問時使用。
$mc->add($key, $datas);
} else {
echo "n".str_pad('Read datas from memcached.', 60, '_')."n";
}
var_dump($datas);
&#63;> 

可以看出,使用 memcached 之后,可以減少數(shù)據(jù)庫連接、查詢操作,數(shù)據(jù)庫負載下來了,腳本的運行速度也提高了。

之前我曾經(jīng)寫過一篇名為《PHP 實現(xiàn)多服務器共享 SESSION 數(shù)據(jù)》文章,文中的 SESSION 是使用數(shù)據(jù)庫保存的,在并發(fā)訪問量大的時候,服務器的負載會很大,經(jīng)常會超出 MySQL 最大連接數(shù),利用 memcached,我們可以很好地解決這個問題,工作原理如下:

用戶訪問網(wǎng)頁時,查看 memcached 中是否有當前用戶的 SESSION 數(shù)據(jù),使用 session_id() 作為唯一標識符;如果數(shù)據(jù)存在,則直接返回,如果不存在,再進行數(shù)據(jù)庫連接,獲取 SESSION 數(shù)據(jù),并將此數(shù)據(jù)保存到 memcached 中,供下次使用; 當前的 PHP 運行結束(或使用了 session_write_close())時,會調(diào)用 My_Sess::write() 方法,將數(shù)據(jù)寫入數(shù)據(jù)庫,這樣的話,每次仍然會有數(shù)據(jù)庫操作,對于這個方法,也需要進行優(yōu)化。使用一個全局變量,記錄用戶進入頁面時的 SESSION 數(shù)據(jù),然后在 write() 方法內(nèi)比較此數(shù)據(jù)與想要寫入的 SESSION 數(shù)據(jù)是否相同,不同才進行數(shù)據(jù)庫連接、寫入數(shù)據(jù)庫,同時將 memcached 中對應的對象刪除,如果相同的話,則表示 SESSION 數(shù)據(jù)未改變,那么就可以不做任何操作,直接返回了; 那么用戶 SESSION 過期時間怎么解決呢?記得 memcached 的 add() 方法有個過期時間參數(shù) $exp 嗎?把這個參數(shù)值設置成小于 SESSION 最大存活時間即可。另外別忘了給那些一直在線的用戶延續(xù) SESSION 時長,這個可以在 write() 方法中解決,通過判斷時間,符合條件則更新數(shù)據(jù)庫數(shù)據(jù)。

以上內(nèi)容是小編給大家介紹的PHP如何使用Memcached,希望對大家有所幫助!

您可能感興趣的文章:

  • PHP5.5在windows安裝使用memcached服務端的方法
  • PHP模塊memcached使用指南
  • PHP擴展模塊memcached長連接使用方法分析
  • PHP 使用memcached簡單示例分享
? ????? ??
? ?? ??? ????? ???? ??? ??????, ???? ?????? ????. ? ???? ?? ???? ?? ??? ?? ????. ???? ??? ???? ???? ??? ?? admin@php.cn?? ?????.

? AI ??

Undresser.AI Undress

Undresser.AI Undress

???? ?? ??? ??? ?? AI ?? ?

AI Clothes Remover

AI Clothes Remover

???? ?? ???? ??? AI ?????.

Video Face Swap

Video Face Swap

??? ??? AI ?? ?? ??? ???? ?? ???? ??? ?? ????!

???

??? ??

???++7.3.1

???++7.3.1

???? ?? ?? ?? ???

SublimeText3 ??? ??

SublimeText3 ??? ??

??? ??, ???? ?? ????.

???? 13.0.1 ???

???? 13.0.1 ???

??? PHP ?? ?? ??

???? CS6

???? CS6

??? ? ?? ??

SublimeText3 Mac ??

SublimeText3 Mac ??

? ??? ?? ?? ?????(SublimeText3)

???

??? ??

??? ????
1600
29
PHP ????
1502
276
???
PHP? AI ??? ?? ?? PHP ?? ?? ?? ??? ??? ?????. PHP? AI ??? ?? ?? PHP ?? ?? ?? ??? ??? ?????. Jul 25, 2025 pm 08:45 PM

??? ?? ??? ??? ?? JavaScript? MediareCorder API? ?? PHP ???? ???? ?????. 2. PHP? ???? ?? ??? ???? STTAPI (? : Google ?? Baidu ?? ??)? ???? ???? ?????. 3. PHP? ???? AI ??? (? : OpenAigpt)? ????. 4. ?? ?? PHP? TTSAPI (? : Baidu ?? Google ?? ??)? ???? ??? ?? ??? ?????. 5. PHP? ?? ??? ??? ??? ??? ?? ?? ??? ?????. ?? ????? PHP? ?? ???? ?? ?? ?? ??? ??? ?????.

PHP? ???? ?? ?? ??? ???? ?? PHP ?? ????? ?? ?? PHP? ???? ?? ?? ??? ???? ?? PHP ?? ????? ?? ?? Jul 25, 2025 pm 08:51 PM

PHP?? ?? ?? ??? ???? ?? ??? ? ???? ?? ??? ???? ?? ??? ???? ???? ????. 1. ?? ?? ??? ?? ??? URL ? ?? ??? ????. 2. UrlenCode? ???? ?? ??? ???????. 3. ? ???? ????? ?? ?? ??? ? ?? ??? ?????. 4. ???? ???? ?? ? ? ??? ??? ??? ??? ?????. 5. ??? ?? ??? ????? ?? ????? OG ??? ???? ?????. 6. XSS ??? ???? ?? ??? ??? ?????. ? ???? ??? ??? ???? ??? ?? ?? ??? ??? ???? ??? ?? ??? ?????.

PHP? ???? AI? ???? ??? ?? ?? PHP ?? ?? ? ???? ?????. PHP? ???? AI? ???? ??? ?? ?? PHP ?? ?? ? ???? ?????. Jul 25, 2025 pm 08:57 PM

AI? ??? ??? ?? ?? ? ?? ???? ????? ?? ??? ??????. 1. Baidu, Tencent API ?? ?? ?? NLP ?????? ?? ??? AI ?? ?? API? ??????. 2. PHP? ? ?? guzzle? ?? API? ???? ?? ??? ??????. 3. ?? ????? ?? ?? ??? ???? ???? ???? ??? ??? ? ????. 4. ?? ?? ? ?? ???? ?? PHP-L ? PHP_CODESNIFFER? ??????. 5. ???? ????? ???? ?? ?? ??? ?????? ??? ??????. AIAPI? ??? ? ???, ?? ??, ?? ? PHP ?? ??? ??? ???. ?? ???? PSR ??? ???, ??? ????? ????, ?? ??? ???, ????? ??? ????, X? ???????.

PHP? PHP ?? ?? ? ?? ??? ??? ?????? ??? ??? ???? ????. PHP? PHP ?? ?? ? ?? ??? ??? ?????? ??? ??? ???? ????. Jul 25, 2025 pm 08:27 PM

1. ?? ???? ??? ??? ?????? ?? ?? ??? ??, ??? ?? ???? ??? (? : ?? ???, ? ? ??), ?? ??? ?? ???? ???? ? ?? ?? ??? ??? ?? ??? ????????. 2. ?? ??? ??? ?? ? ??? ???? ?? ?? ?? ???? ?? ? ?? AUDIT ?? ??? ??? ? ????? ????? ??? ???????. 3. ?? ?? ??? ?? ??? ???????. Recaptchav3 ???? ??, ??? ?? ?? ?? ?? ??, IP ? ?? ??? ??? ??? ?? ???? ??? ?? ??? ????? ??? ???? ????? ??? ?????.

PHP? ???? AI? ???? ???? ???? ??. PHP? ???? ?? ??? ????? PHP? ???? AI? ???? ???? ???? ??. PHP? ???? ?? ??? ????? Jul 25, 2025 pm 07:21 PM

PHP? AI ??? ??? ?? ????? ??? API? ?? ?????. ??? ??? ????? ? ??? ???? ?????. API ??? ?? ?? ??? ???? ??? ??? ???? ???? ? ????. 2. ?? ?? ???? guzzle ?? curl? ???? HTTP ??? ???, JSON ??? ??? ? ???, API ? ?? ??, ??? ? ?? ??? ???? ??, ??? ?? ?? ? ? ?? ????, ??? ?? ? ?????? ?????. 3. ???? ???? ?? ???? API ??, ?? ? ??? ?? ??, ??? ?? ??, ?? ?? ? ??? ??? ??? ?????. ?? ??? ??? ??? ? ??? ???? Propt ?? ? ?? ?? ??, ??? ?? ? ?? ????, ?? ?? ?? ???? ? ??? ?? ? ???? ????? ?????.

PHP? ?? ?? ?? ? ?? ?? PHP ?? ??? ? ?? ????? ?? PHP? ?? ?? ?? ? ?? ?? PHP ?? ??? ? ?? ????? ?? Jul 25, 2025 pm 08:30 PM

PHP? ?????? ????? ?? ?? ?? ???? ???? ?? ???? ???? ?? ?? ???? ?????. 2. ?? ??? ???? ???? ?? ??? ?? ? ??? ??? ???? ?? API/Webhook ??? ??? ?? ???? ??? ??? ??? ??? ?????. 3. ?? ????? ?? ??, ??/???? ????, ???? ??, ???? ? ??? ?????? ????? ?? ??? ???? ???? ?? Dingtalk, SMS ?? ??? ???? ??? ?????? ???? ?? ? ??? ??? ????? ?? ??? ???? ???????.

?? ?? ?? : ?? ?? ?????? PHP? ?? ?? ?? ?? : ?? ?? ?????? PHP? ?? Jul 27, 2025 am 04:31 AM

PhpisstillRelevantinmodernenterpriseenvironments.1. Modernphp (7.xand8.x)? ??? ??, ??? ??, jitcompilation ? modernsyntax, mateitsuilableforlarge-scalepplications

PHP ?? AI ?? ?? ? ??? PHP ?? ??? ?? ?? ??? PHP ?? AI ?? ?? ? ??? PHP ?? ??? ?? ?? ??? Jul 25, 2025 pm 07:06 PM

??? AI ?? ?? ???? ???? PHPSDK? ??????. 2. PHP? ???? FFMPEG? ???? ???? API ?? ?? (? : WAV)?? ?????. 3. ??? ???? ????? ????? API ???? ??? ??????. 4. NLP ??? ???? JSON ??? ???? ???? ?????. 5. ?? ??? ???? ???? ?? ?? ?? ?? ?? ??? ?????. ?? ????? ?? ?? ? ??? ???? ?? ??? ???, ??? ?? ? ??? ???????.

See all articles