PHP 缓存 内存,PHP memcache 内存缓存 数据库查询 应用 高洛峰 细说PHP
PHP memcache在數(shù)據(jù)庫查詢中應(yīng)用,減少連接數(shù)據(jù)庫的次數(shù),降低服務(wù)器的壓力!/*
*?memcache應(yīng)用說明?memory?cache?內(nèi)存緩存
*?工作原理
*??服務(wù)器端口port?11211
*?MemCached?存取鍵值對key?=>?value
*?1.內(nèi)網(wǎng)訪問
*?2.設(shè)置防火墻
*/
//創(chuàng)建memcache對象
$mem??=??new??Memcache();
//連接memcache服務(wù)器
$host?=?'localhost';
$port?=?'11211';
$mem->connect($host,$port);
//$mem->addserver($host,$port);
//$mem->addserver('192.168.10.254',?11211);?//新增一臺服務(wù)器的內(nèi)存
$dsn???????????=?????'mysql:dbname=test;host=localhost';
$username?=????'root';
$passwd?????=????'root';
$options?????=????array(
PDO::ATTR_AUTOCOMMIT=>true,
PDO::ATTR_PERSISTENT=>true
);
//連接數(shù)據(jù)庫
try{
//創(chuàng)建對象
$pdo?=??new?PDO($dsn,?$username,?$passwd,?$options);
//設(shè)置錯誤使用異常模式
$pdo->setAttribute(PDO::ATTR_ERRMODE,?PDO::ERRMODE_EXCEPTION);
}catch(PDOException?$e){
echo?"數(shù)據(jù)庫連接失敗:".$e->getMessage();
exit;
}
$statement?=?"select?*?from?users?where?id?>???and?id?
//鍵名用md5()加密后?名字更規(guī)范?防止查詢語句信息泄漏
$key?=?md5($statement);
//直接從內(nèi)存要數(shù)據(jù)
$data?=?$mem->get($key);
//判斷是否存在$data,如果沒有才需要連接數(shù)據(jù)庫獲取數(shù)據(jù)!數(shù)據(jù)直接從內(nèi)存獲取,實現(xiàn)緩存。
if(empty($data)){
try{
//給數(shù)據(jù)庫管理系統(tǒng),編譯后等待?沒有執(zhí)行
$pdostatement=$pdo->prepare($statement);
$pdostatement->execute(array(3,6));
//設(shè)置結(jié)果的模式
$pdostatement->setFetchMode(PDO::FETCH_NUM);
$data?=?$pdostatement->fetchAll(PDO::FETCH_ASSOC);
//保存在緩存中
$mem->set($key,?$data,MEMCACHE_COMPRESSED,10);
echo?'第一次數(shù)據(jù)庫查詢!
';
}catch?(PDOException?$e){
echo?'錯誤的原因:'.$e->getMessage();
}
}
//按表格形式輸出
echo?'
foreach?($data?as?$value){
echo?'
';echo?'
'.$value['id'].'';echo?'
'.$value['username'].'';echo?'
'.$value['password'].'';echo?'
'.$value['email'].'';echo?'
';}
echo?'
';//關(guān)閉連接
$mem->close();
總結(jié)
以上是生活随笔為你收集整理的PHP 缓存 内存,PHP memcache 内存缓存 数据库查询 应用 高洛峰 细说PHP的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OI回忆录——一个过气OIer的制杖历程
- 下一篇: php 三方即时通讯_php即时通讯解决