PHP 缓存 内存,PHP memcache 内存缓存 数据库查询 应用 高洛峰 细说PHP
PHP memcache在數據庫查詢中應用,減少連接數據庫的次數,降低服務器的壓力!/*
*?memcache應用說明?memory?cache?內存緩存
*?工作原理
*??服務器端口port?11211
*?MemCached?存取鍵值對key?=>?value
*?1.內網訪問
*?2.設置防火墻
*/
//創建memcache對象
$mem??=??new??Memcache();
//連接memcache服務器
$host?=?'localhost';
$port?=?'11211';
$mem->connect($host,$port);
//$mem->addserver($host,$port);
//$mem->addserver('192.168.10.254',?11211);?//新增一臺服務器的內存
$dsn???????????=?????'mysql:dbname=test;host=localhost';
$username?=????'root';
$passwd?????=????'root';
$options?????=????array(
PDO::ATTR_AUTOCOMMIT=>true,
PDO::ATTR_PERSISTENT=>true
);
//連接數據庫
try{
//創建對象
$pdo?=??new?PDO($dsn,?$username,?$passwd,?$options);
//設置錯誤使用異常模式
$pdo->setAttribute(PDO::ATTR_ERRMODE,?PDO::ERRMODE_EXCEPTION);
}catch(PDOException?$e){
echo?"數據庫連接失敗:".$e->getMessage();
exit;
}
$statement?=?"select?*?from?users?where?id?>???and?id?
//鍵名用md5()加密后?名字更規范?防止查詢語句信息泄漏
$key?=?md5($statement);
//直接從內存要數據
$data?=?$mem->get($key);
//判斷是否存在$data,如果沒有才需要連接數據庫獲取數據!數據直接從內存獲取,實現緩存。
if(empty($data)){
try{
//給數據庫管理系統,編譯后等待?沒有執行
$pdostatement=$pdo->prepare($statement);
$pdostatement->execute(array(3,6));
//設置結果的模式
$pdostatement->setFetchMode(PDO::FETCH_NUM);
$data?=?$pdostatement->fetchAll(PDO::FETCH_ASSOC);
//保存在緩存中
$mem->set($key,?$data,MEMCACHE_COMPRESSED,10);
echo?'第一次數據庫查詢!
';
}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?'
';//關閉連接
$mem->close();
總結
以上是生活随笔為你收集整理的PHP 缓存 内存,PHP memcache 内存缓存 数据库查询 应用 高洛峰 细说PHP的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OI回忆录——一个过气OIer的制杖历程
- 下一篇: 看风水用什么罗盘最好_兰花用什么花盆栽植