memcached優化方案實例
<?php
//引入memcached
require_once ‘../class/memcached.class.php‘;
//連接MySQL
$link = mysqli_connect("localhost", "root", "", "laravel");
//給memcached傳值
$mc = new memcached(array(
‘servers‘ => array(‘127.0.0.1:11211‘),
‘debug‘ => false,
‘compress_threshold‘ => 10240,
‘persistant‘ => true,
));
//獲取文章id
$id = $_GET[‘id‘];
//設置key
$key = "news_click_" . $id; // 33 100 news_click_33 102
//獲取key
$click = @$mc->get($key);
//如果內存中沒有
if ($click === null) {
//如果內存中沒有,去數據庫讀點擊數
//根據id,讀文章記錄
$sql = "select clicknum from news where id=$id";
//執行
$result = mysqli_query($link, $sql);
//獲取結果
$arr = mysqli_fetch_assoc($result);
//獲取瀏覽量
$click = $arr[‘clicknum‘];
//自增瀏覽量
$click++;
//添加內存
$mc->add($key, $click);
} else {
//如果有內存, 直接自增值
$mc->incr($key, 1);
//本次訪問量+1
$click++;
//減少數據庫壓力,5次一蹦
if ($click % 5 == 0) {
$sql = "update news set clicknum=$click where id=$id";
mysqli_query($link, $sql);
}
}
//數據庫表中,記錄的點擊數要自增1
echo "document.write(‘{$click}‘)";
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <h1>隔壁老王,幫助別人,從不留名</h1> <div>發布時間:2018-07-03 點擊數: <script type="text/javascript" src="click.php?id=1"></script> </div> <hr/> <div>很隨便</div> </body> </html>
memcached優化方案實例