導航:首頁 > 編程語言 > phpmemcached用法

phpmemcached用法

發布時間:2023-05-16 08:30:20

Ⅰ 如何設置memcached來共享php的session

有3種設置方法,都是通過設置php.ini(也就是php的配置文件)來進行設置的
1.直接修改php.ini配置文件

1
2
3

session.save_handler = memcache //設置session的儲存方式為memcache
memcache.hash_strategy = "consistent"//設置memcache的hash演算法
session.save_path = "tcp://127.0.0.100:11211" //設置session儲存的位置,多台memcache用逗號隔開,例如:tcp://127.0.0.1:11211,tcp://127.0.0.1:12000

2.利用目錄下的 .htaccess 文件配置 (apache支持,nginx需要配置)

1
2

php_value session.save_handler "memcache"
php_value session.save_path "tcp://127.0.0.1:11211"

3.在項目的PHP文件中修改配置 (哪個頁面用就在哪個頁面寫)

1
2

ini_set("session.save_handler", "memcache");
ini_set("session.save_path", "tcp://127.0.0.100:11211");

Ⅱ php 使用memcached 怎麼做登錄

原本就不應該用memcached來保存登錄狀態,如果非要用memcached做點跟登錄有關的事,那就用它來保存以下用戶信息就行了。
登錄信息保存在session或者cookie里,session會更安全,cookie可以長期保存。每次操作都用session或cookie里的登錄信息與資料庫里或memcached里的用戶信息做驗證。
memcached其實是一個內存管理工具,它並非PHP的一部分,只是正好PHP可以使用它。

Ⅲ 使用php Memcache模塊如何正確遍歷所有KEY以及VALUE

在php提供的用於與memcached交互的擴展模塊中有memcached與memcache,前者提供方法getAllKeys用於遍歷所有Memcached伺服器上的key,但是並不保證原子操作,而後者卻沒有提供任何方法,雖然在PHP官方
文檔中有人給出使用方法getExtendedStats來間接獲取Memcached伺服器上的所有key,但是給出的代碼是有不少坑的,如果拿來就用,對於cluster的memcached伺服器而言,有些問題就需要指出來。
下面將給出官方文檔中的代碼,並指出可能面臨的問題,代碼如下:
<?php
/**
*Functiontogetallmemcachekeys
*@authorManishPatel
*@Created:28-May-2010
*/
functiongetMemcacheKeys(){

$memcache=newMemcache;
$memcache->connect('127.0.0.1',11211)ordie("");

$list=array();
$allSlabs=$memcache->getExtendedStats('slabs');
$items=$memcache->getExtendedStats('items');
foreach($allSlabsas$server=>$slabs){
foreach($slabsAS$slabId=>$slabMeta){
$cmp=$memcache->getExtendedStats('cachemp',(int)$slabId);
foreach($cmpAS$keys=>$arrVal){
foreach($arrValAS$k=>$v){
echo$k."<br>";
}
}
}
}//EOgetMemcacheKeys()?>
在上述代碼中,如果用於獲取單個memcached伺服器上的key,是不存在任何問題,但是獲取連接池中的多個memcached所有key就存在問題,會發現列印出重復的key,問題就在於當使用getExtendedStats用去特定$slabID
上的信息時,返回的是連接池中所有的伺服器上的特定$slabId的存儲的keys信息。當$server為"127.0.0.1:11214"且$slabId為0將變數$cmp的信息列印出如下所示:
array(2){
["127.0.0.1:11214"]=>
array(1){
["course_schools__??¨é?¨"]=>
array(2){
[0]=>
string(1)"0"[1]=>
string(10)"12"}
}
["127.0.0.1:11216"]=>
array(1){
["monitorMemcache"]=>
array(2){
[0]=>
string(2)"10"[1]=>
string(10)"12"}
}
}
當$server為"127.0.0.1:11216"且$slabId為0將變數$cmp的信息列印出如下所示:
array(2){
["127.0.0.1:11214"]=>
array(1){
["course_schools__??¨é?¨"]=>
array(2){
[0]=>
string(1)"0"[1]=>
string(10)"12"}
}
["127.0.0.1:11216"]=>
array(1){
["monitorMemcache"]=>
array(2){
[0]=>
string(2)"10"[1]=>
string(10)"12"}
}
}

Ⅳ php 怎麼配置memcached

分為linux和windows系統下:

windows下:

1、首先下載memcache的windows版本,將下載下來的文件解壓出來後會看見一個名為memcached.exe的可執行程序

2、將該文件放到指定目錄,如D盤

3、安裝:

開始->運行->cmd打開命令窗口

進入D盤:cd d:

安裝memcache服務:

在命令窗口輸入:

memacahed.exe -d install

等待命令執行完成後,就可以在服務列表中看到memcached服務

4、啟動memcache服務:

memcached.exe -d start

5、可以通過以下命令來查看memcache服務是否啟動成功:

wmic process get description, executablepath | findstr memcached.exe

可以將memcached.exe的路徑放入到系統環境變數中,方便使用。

查看memcache運行狀態:

在命令窗口輸入:

telnet 127.0.0.1 11211

鏈接到memcache上,輸入stats就可以查看到當前memcache的狀態了;

linux下:

1.下載memcache源碼

http://www.memcached.org/

2.解壓並進入目錄

./configure --prefix=/usr/local/memcache
make
make test
sudo make install

3.啟動memcache

memcache -d start -u root

驗證memcache是否正確安裝並啟動

netstat -tap | grep memcached

4.安裝memcache擴展庫

下載memcache擴展

進入到memcache擴展文件

./configure --enable-memcache --with-php-config=/usr/local/php/bin/php-config
make
make install

修改php.ini文件 增加

extension=memcache.so

安裝memcached擴展庫

下載memcached擴展

memcached擴展需要libMemcached庫的支持,所有在安裝memcached擴展庫之前要確認系統已經安裝了libmemcached

安裝libmemcached

./configure --prefix=/usr/local/memcache
make
make install

libmemcached安裝完成後,就可以安裝memcached擴展庫

./configure --with-libmemcached-dir=/usr/local/memcached/ --with-php-config=/usr/local/php/bin/php-config
make
make install

同樣修改php.ini配置文件,增加

extension=memcached.so

Ⅳ php 一個網站需要用memcached!主要緩存什麼內容 那些該緩存 應該注意什麼

這個東西最大的好處是可以存儲對象,減少很多資料庫和伺服器壓力。直接基於內存的存儲,調用速度非常給力。
主要緩存的內容,大概可以歸納為 1.不需要即時顯示的內容,或者mysql查詢耗時的內容。舉例說明:網站的列表【最火的 排行榜】等非及時的,最新的如果強調及時性,可不用,當然也可以使用,可能更新緩存頻率較高。
2.非常需要速度和性能的地方
有些頁面通過mysql可能聯合查詢,全表檢索查詢速度相當慢,這時候可用緩存暫時保留 例如搜索引擎的結果集。

3.臨時數據保存
我們知道mysql Oracle等關系型資料庫,需要建立表結構才能存儲,這就決定了,有些臨時數據的存儲,也需要建立特定的表結構。這樣就比較啰嗦,不便於維護。
4.存儲對象
這個也是一個比較有特色的地方,php創建對象的效率是不高的,甚至堪稱低效,再加上構造函數大量的資料庫操作的話,會讓性能低到谷底,那麼它能幫你吧已經創建好的對象 保存起來 下次相同的請求 無需new只需要將它還原。
綜上,緩存是php的利器,速度 效率 等詞彙都可以通過它去體現

Ⅵ php怎麼開啟memcache

下載memcache安裝包和php擴展文件php_memcache.dll。解壓memcache,把memcached移動到C盤。

單擊開始菜單,運行「cmd」。
cd .. //進入c盤
cd memcached //進入memcache目錄
memcache.exe -d install //安裝memcache服務

設置php:找到php安裝目錄,打開php.ini文件。找到配置文件里允許支持擴展的區域exetension=。。,添加一行exetension=php_memcache.dll。

把php擴展文件php_memcache.dll移動到php安裝目錄下的ext目錄下。注意在php.ini中要設置好exetension目錄。php_memcache.dll此文件需要先在網上下載下來!

設置apache:
打開apache配置文件httpd.conf,找到LoadMole載入模塊區域。去掉前面的「LoadMole mem_cache_mole moles/mod_mem_cache.so」#號

重啟apache服務。linux下重啟使用命令:service httpd restart。

然後就大功告成!

Ⅶ php中memcached怎麼存多維數組

PHP的Memcached的驅動會自動進行serialize和unserialize,你所需要做的是:
1. 選取一個合適key,比如 "POST_OF_USER_" . $userId
2. 調用set函數把數據丟進去就仿緩行了
示例代碼:
全選復制放進筆記// 0. 准備:
$cache = new Memcache();
$cache->connect('127.0.0.1', 11211); // 請替換為你的memcache伺服器地址和埠
$userId = // 你自己想辦法獲取...

//拿大備 1. 構造cache KEY
$cacheKey = "POSTS_OF_USER_" . $userId;

// 2. 從緩存中獲取數據
$posts = $cache->get($cacheKey);
if ($posts === false){
// 3. 緩存失效了,載入數據
$posts = // 你自己想辦法載入數據

// 4. 保存數據到緩存中消毀
$cache->set($cacheKey, $posts);
}

// OK,可以使用posts了

Ⅷ php安裝了memcached擴展,怎麼使用

首先查看memcache的依賴庫是否有安裝,如果對這個有疑問可以參考php手冊的memcache的安裝需求說明
命令如下:
查詢: rpm -qa | grep libevent
安裝:yum -y install libenent*

安裝memcached,相當於apache的httpd是用來啟動memcache和管理memcache的
命令如下:
yum -y install memcached

接下來再安裝memcache,這里我們不要考慮對別的包有什麼依賴yum會幫我們解決的,這也是yum的強悍之處
命令如下:
yum -y install php-pecl-memcache

然後查看memcached的bin安裝目錄,啟動memcache,相關參數的作用裡面有詳細說明

然後簡單的寫一個memcache連接是否成功的測試代碼測試一下看看是否成功,很不給面子沒有顯示出來我們要的效果

下面說一下我的一般排錯辦法
1.查看相關文件的許可權時候設置正常
2.查看linux的防火牆的設置
3.動態查看apache的錯誤日誌的提示信息
4.查看linux的SELINUX的設置
那下面就安按照這個思路去排錯

上面按照前三步的順序調查問題仍然存在,最後的去看看SELINUX的設置了,其中你可以用tail -f error_log 去動態監測錯誤日誌,但是這里從錯誤日誌看不出來什麼東西
命令如下:
查看SELINUX的模式:getenforce
設置SELINUX的模式:setenforce 0

或者編輯這個文 :/etc/selinux/config
最後重啟查看效果,問題解決了!

Ⅸ Memcached常用命令以及使用說明詳解

一 存儲命令

存儲命令的格式

? <mand name> <key> <flags> <exptime> <bytes> <data block>

參數說明如下

<mand name> set/add/replace <key> 查找關鍵字 <flags> 客戶機使用它存儲關於鍵值對的額外信息 <exptime> 該數據的存活時間 表示永遠 <bytes> 存儲位元組數 <data block> 存儲的數據塊(可直接理解為key value結構中的value)

添加

( ) 無論如何都存儲的set

這個set的命令在memcached中的使用頻率極高 set命令不但可以簡單添加 如果set的key已經存在 該命令可以更新該key所對應的原來的數據 也就是實現更新的作用

可以通過「get 鍵名」的方式查看添加進去的記錄

如你所知 我們也可以通過delete命令刪除掉 然後重新添加

( ) 只有數據 不存在 時進行添加的add

( ) 只有數據 存在 時進行替換的replace

刪除

可以看到 刪除已存在的鍵值和不存在的記錄可以返回不同的結果

二 讀取命令

get

get命令的key可以表示一個或者多個鍵 鍵之間改肆以空格隔開

gets

可以看到 gets命令比普通的get命令多返回了一個數字(上圖中為 ) 這個數字可以檢查數據是否發生改變 當key對應的數據改變時 這個多返回的數字也會改變

cas

cas即checked and set的意思 只有當最後一個參數和gets所獲取的參數匹配時才能存儲 否則返回「EXISTS」

三 狀態命令

stats

stats items

執行stats items 可以看到STAT items行 如果memcached存儲內容很多 那麼這里也會列出很多的STAT items行

stats cachemp slab_id limit_num

我們執行stats cachemp 命令效果如下

這里slab_id為 是由 中的stats items返回的結果(STAT items後面的數字)決定的 limit_num看起來好像是返回多少條記錄 猜的一點不錯 不過 表示顯示出所有記錄 而n(n> )就表示顯示n條記錄 如果n超過該slab下的所有記錄 則結果和 返回的結果一致

通過stats items stats cachemp slab_id limit_num配合get命令可以遍歷memcached的記錄

其他stats命令

如stats slabs stats sizes stats reset等等使用也比較常見

四 其他常見命令

append

在現有的緩存數據後添加緩存數據 如現有緩存的key不存在伺服器響應為NOT_STORED

prepend

和append非常類似 但它的作用是在現有的緩存數據前添加緩存數據

flush_all

該命令有一個可選的數字參數 它總是執行成功 伺服器會發送 「OKrn」 回應 它的效果是使已經存在的項目立即失效(預設) 或在指定的時間後 此後執行取回命令 將不會有任何內容返回(除非重新存儲同樣的鍵名) flush_all 實際上沒有立即釋放項目所佔用的內存 而是在隨後陸續有新的項目被儲存時哪殲耐執行(這是由memcached的懶惰檢測和刪除機制決定的)

flush_all 效果是它導致所有更新時間早於 flush_all 所設定時間的項目 在被執行取回命令時命令被忽略

其他命令

memcached還有很多命令 比如對於存儲為數字型的可以通過incr/decr命令進行增減操作等等 這里只列出開發李春和運維中經常使用的命令 其他的不再一一舉例說明

補充一則 簡單認識 net framework中的幾種緩存

web站點中緩存的重要性毋庸置疑 我想很多asp net開發人員在開發web應用系統的時候優先考慮使用的緩存並不是第三方緩存解決方案(比如 分布式緩存memcached redis等等) 而應該是 net framework已經提供的多種緩存解決方案 下面結合自己的開發經驗談談對 net framework中緩存的認識

System Web Caching Cache

估計大部分做過asp net開發的人都用過這個命名空間下的緩存 我們可以直接使用HttpContext Current Cache實例而不 用實例化 當然這個命名空間下的Cache類是允許您實例化的 需要定製自己的緩存系統的當然可以完全自己控制如何初始化這個類 我在園子里看到過有很多 文章介紹Cache的CRUD輔助類庫大多數都是針對System Web Caching Cache

需要說明的是 我們還可以通過該命名空間下的HttpRuntime Cache實現web 控制台 winform等不同表現形式下的緩存 而且 完全無需自己實例化 HttpRuntime Cache是之前個人開發中使用比較多的一個類 現在比較偏愛 net framework 中的增強型的緩存類MemoryCache

Output Cache

眾所周知 輸出緩存主要分頁面輸出緩存和頁面部分緩存 說白了 就是緩存整個頁面的或者部分 本來沒什麼值得討論的 但是最近看到的這篇博客才恍然發現 想不到使用它還真是大有講究 我以前怎麼就沒有發現這個問題呢?看來發現問題和解決問題的能力同樣重要 有時候前者甚至更重要啊

System Runtime Caching

現在個人開發中使用最多的類MemoryCache出自這個命名空間 使用前需要引用using System Runtime Caching MemoryCache繼承自ObjectCache IEnumerable IDisposable 其中ObjectCache是個抽象類 用過MemoryCache的人都知道 這個MemoryCache有一個屬性叫 Default 通常可以像下面這樣使用

private static ObjectCache memCache = MemoryCache Default;

當然我們也完全可以通過public MemoryCache(string name NameValueCollection config = null)構造函數初始化緩存對象

接著我們可以在web config文件中配置每個MemoryCache實例運行的內存使用配額方案和配額檢查周期 下面示例參考MSDN

<system runtime caching> <memoryCache> <namedCaches> <add name=Default cacheMemoryLimitMegabytes=" " pollingInterval=" : : "/> </namedCaches> </memoryCache> </system runtime caching>

lishixin/Article/program/PHP/201311/21342

Ⅹ PHP中的Memcache和memcached的區別 Memcache的操作方法

Memcached和Memcache是Memcached伺服器的擴展


閱讀全文

與phpmemcached用法相關的資料

熱點內容
word文件如何壓縮大小 瀏覽:277
遵義聯通伺服器地址是什麼 瀏覽:29
ansys約束命令流 瀏覽:814
解壓軟體電腦版如何下載 瀏覽:791
閃電匕首演算法球 瀏覽:692
linuxredis停止命令 瀏覽:670
大麥賬號怎麼加密 瀏覽:113
穿越火線怎麼找伺服器 瀏覽:526
秘密加密社交軟體app 瀏覽:256
c語言編譯器怎麼找文件 瀏覽:835
數學不好能編程嗎 瀏覽:254
微雲里的視頻加密 瀏覽:41
3大加密貨幣交易平台 瀏覽:647
鈑金激光切割機編程 瀏覽:496
vivo手機手電筒app在哪裡 瀏覽:787
單片機晶振電路電容 瀏覽:887
穿越火線河南一區伺服器雲主機 瀏覽:41
文件夾與快捷方式顯示一致 瀏覽:879
幻影伺服器怎麼看金錢 瀏覽:349
小米手機怎麼用app減肥 瀏覽:893