溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

php怎么實現(xiàn)內(nèi)存緩存

發(fā)布時間:2021-07-02 15:34:29 來源:億速云 閱讀:151 作者:chen 欄目:開發(fā)技術(shù)

這篇文章主要講解了“php怎么實現(xiàn)內(nèi)存緩存”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“php怎么實現(xiàn)內(nèi)存緩存”吧!

在php中緩存分為很多種類型如,內(nèi)存緩存,文件緩存,頁面緩存。本文要來講述關(guān)于php中內(nèi)存緩存的一些方法,這里我們將介紹Memcached緩存和php自帶的APC緩存方法.

1.Memcached緩存。

memcached是高性能的分布式內(nèi)存緩存服務(wù)器,通過緩存數(shù)據(jù)庫查詢結(jié)果,減少數(shù)據(jù)庫訪問次數(shù),以提高動態(tài)Web應(yīng)用的速度,memcached 使用了“Key=>Value”方式組織數(shù)據(jù),可以允許不同主機(jī)上的多個用戶同時訪問這個緩存系統(tǒng),一般用于大型網(wǎng)站使用,memcached使用內(nèi)存緩存數(shù)據(jù),所以它是易失的,當(dāng)服務(wù)器重啟,或者memcached進(jìn)程中止,數(shù)據(jù)便會丟失,所以 memcached不能用來持久保存數(shù)據(jù).

用過php_memcache的人都會覺得 PHP內(nèi)存緩存是一個很復(fù)雜的東西,其實不然memcached 是高效、快速的分布式內(nèi)存對象緩存系統(tǒng),主要用于加速 WEB 動態(tài)應(yīng)用程序.

這里介紹memcached在WIN32下的配置及其使用.

一、PHP內(nèi)存緩存的配置,WIN32環(huán)境

1、下載php_memcache.rar

解壓壓縮包:php_memcache.rar

php_memcache.rar壓縮包里主包含的文件有:

/memcached-1.2.1-win32/memcached.exe

/php_memcache/php_memcache.dll

2、打開命令提示符,指向到memcached.exe所在路徑,運(yùn)行memcached.exe -d start。

3、將php_memcache.dll文件拷貝到PHP的動態(tài)文件庫的文件夾下。

4、在php.ini文件中加入一行extension=php_memcache.dll。

5、重新啟動Apache,然后查看一下phpinfo,如果有memcache,那么就說明安裝成功!

例,代碼如下:

復(fù)制代碼 代碼如下:

<?php
//包含 memcached 類文件
require_once('memcached-client.php');
 
//選項設(shè)置
$options = array(
 'servers' => array('www.jb51.net:11211'),//memcached 服務(wù)的地址、端口
 'debug' => true,//是否打開debug
 'compress_threshold' => 10240,//超過多少字節(jié)的數(shù)據(jù)時進(jìn)行壓縮
 'persistant' => false//是否使用持久連接
 );
 
//實例化memcached對象
$memcached = new memcached($options);
 
$sql = 'SELECT * FROM table1';
$key = md5($sql);
 
//如果在memcached中沒有緩存數(shù)據(jù),把緩存數(shù)據(jù)寫入memcached
if(!($datas = $memcached->get($key)))
{
 $conn = mysql_connect('localhost', 'hxsd', '123456');
 mysql_select_db('hxsd');
 $result = mysql_query($sql);
 while($row = mysql_fetch_object($result))
 {
  $datas[] = $row;
 }
 //將數(shù)據(jù)庫中獲取到的結(jié)果集數(shù)據(jù)保存到 memcached 中,以供下次訪問時使用。
 $memcached->add($key, $datas);
}
else
{
 //直接使用memcached中的緩存數(shù)據(jù)$datas
}
?>


內(nèi)存緩存二,APC、EC、Zend加速器的比較

一、APC

APC,全稱是Alternative PHP Cache,官方翻譯叫”可選PHP緩存”,主頁是 http://pecl.php.net/package/apc,php幫助手冊頁面: http://cn.php.net/apc

APC是個優(yōu)化器,自安裝之日起,就默默地在后臺為您的PHP應(yīng)用服務(wù)了.您的所有PHP代碼會被緩存起來,針對php opcode.

另外,APC可提供一定的內(nèi)存緩存功能.但是這個功能并不是十分完美,有報告說如果頻繁使用APC緩存的寫入功能,會導(dǎo)致不可預(yù)料的錯誤.如果想使用這個功能,可以看看apc_fetch,apc_store等幾個與apc緩存相關(guān)的函數(shù).

安裝,代碼如下:

復(fù)制代碼 代碼如下:

# pecl install APC

配置:/etc/php.inc,代碼如下:

復(fù)制代碼 代碼如下:

extension=apc.so

[apc]

復(fù)制代碼 代碼如下:

apc.enabled = 1
apc.shm_segments = 1
apc.shm_size = 30
apc.optimization = 0
apc.ttl = 7200
apc.user_ttl = 7200
apc.num_files_hint = 1000
apc.mmap_file_mask = /tmp/apc.XXXXXX

感謝各位的閱讀,以上就是“php怎么實現(xiàn)內(nèi)存緩存”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對php怎么實現(xiàn)內(nèi)存緩存這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

php
AI