1)靜態(tài)緩存
保存在磁盤上的靜態(tài)文件,用PHP生成數(shù)據(jù)放入靜態(tài)文件中,以此減輕數(shù)據(jù)庫(kù)的壓力
1)PHP靜態(tài)文件緩存類
<?php
class File {
private $_dir; // 默認(rèn)路徑
const EXT = '.txt'; // 文件后綴名
public function __construct() {
// dirname() 當(dāng)前文件目錄
$this->_dir = dirname(__FILE__) . '/files/'; //默認(rèn)路徑為當(dāng)前文件下的files下
}
/**
* [cacheData description]
* @Author ZJC
* @DateTime 2017-02-15T10:31:38+0800
* @param [type] $key [緩存文件文件名]
* @param string $value [緩存數(shù)據(jù)]
* @param string $path [緩存路徑]
* @return [type] [description]
*/
public function cacheData($key, $value = '', $path = '') {
$filename = $this->_dir . $path .$key . self::EXT;
if ($value !== '') { // 將value值寫入緩存
if(is_null($value)) {
return @unlink($filename);
}
// 判斷是否存在文件目錄,如果不存在,則創(chuàng)建
$dir = dirname($filename);
if (!is_dir($dir)) {
mkdir($dir, 0777);
}
// file_put_contents:將一個(gè)字符串寫入文件
// int file_put_contents ( string $filename , mixed $data [, int $flags = 0 [, resource $context ]] )
// $data部分最好為字符串形式,因?yàn)椴恢С侄嗑S數(shù)組;(序列化,JSON都可以)
return file_put_contents($filename, json_encode($value)); // c成功返回字節(jié)數(shù),失敗返回FALSE
}
if(!is_file($filename)) { // 顯示緩存
return FALSE;
} else {
return json_decode(file_get_contents($filename), true);
}
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
2)調(diào)用方法
<?php
require_once('./file.php');
$data = array(
'id' => 1,
'name' => 'singwa',
'type' => array(4,5,6),
'test' => array(1,45,67=>array(123, 'test')),
);
$file = new File();
// 寫入緩存
if($file->cacheData('index_mk_cache', $data)) {
// var_dump($file->cacheData('index_mk_cache'));exit;
echo "success";
} else {
echo "error";
}
// 查看緩存
if($file->cacheData('index_mk_cache')) {
var_dump($file->cacheData('index_mk_cache'));exit;
echo "success";
} else {
echo "error";
}
// 刪除緩存
if($file->cacheData('index_mk_cache', null)) {
echo "success";
} else {
echo "error";
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
2)Memcache和Redis緩存技術(shù)
教程地址:https:///article-6719-1.html 、http://www.imooc.com/qadetail/119389
本人文章:http://www./visionz/redis-memcache/274193
Memcache,Redis都需要安裝才能使用;
1. Memcache和Redis都是用來(lái)管理數(shù)據(jù)的(一種緩存服務(wù))
2. 他們數(shù)據(jù)都是存放在內(nèi)存里的(獲取速度快)
3. Redis可以定期將數(shù)據(jù)備份到磁盤(持久化)
4. Memcache只是簡(jiǎn)單的key/value緩存
5. Redis不僅僅支持簡(jiǎn)單的k/v類型的數(shù)據(jù),同時(shí)還提供list,set,hash等數(shù)據(jù)結(jié)構(gòu)的存儲(chǔ)
如何操作數(shù)據(jù)
命令包括以下:
1. 開啟redis客戶端
2. 設(shè)置緩存值 - set index-mk-cache 數(shù)據(jù)
3. 獲取緩存數(shù)據(jù) - get index-mk-cache
4. 設(shè)置過(guò)期時(shí)間 - setex key 10 'cache'
5. 刪除緩存 - del key
php操作Redis
1. 按照phpredis擴(kuò)展
2. php鏈接redis服務(wù)-connect(127.0.0.1, 6379)
3. set 設(shè)置緩存
4. get 獲取緩存
設(shè)置 redis 緩存,文件地址:/var/www/app/setCache.php
$redis = new Redis();
$redis->connect('192.168.2.110', 6379);
// 設(shè)置緩存
// $redis->set('vision', 123);
// 設(shè)置定期緩存,15秒失效
$redis->setex('vision2', 15, 'heoolshdfksjfl');
獲取 redis 緩存,文件地址:/var/www/app/getCache.php
$redis = new Redis();
$redis->connect('192.168.2.110', 6379);
var_dump($redis->get('vision2'));
php操作Memcache
1. 安裝memcache擴(kuò)展
2. 鏈接服務(wù)-connect('memcache_host', 11211);
3. set 設(shè)置緩存
4. get 獲取緩存
設(shè)置和獲取 memcache 與 redis 相似,文件地址:/var/www/app/memcache.php
$memcache_obj = new Memcache;
/* connect to memcached server */
$memcache_obj->connect('127.0.0.1', 11211);
/*
設(shè)置'var_key'對(duì)應(yīng)值,使用即時(shí)壓縮
失效時(shí)間為50秒
*/
$memcache_obj->set('var_key', 'some really big variable', MEMCACHE_COMPRESSED, 20);
echo $memcache_obj->get('var_key');
3)定時(shí)任務(wù)
學(xué)習(xí)要點(diǎn)
1. 掌握如何設(shè)置定時(shí)任務(wù)常用命令
2. 掌握如何定時(shí)運(yùn)行PHP程序
定時(shí)任務(wù)命令
1. 定時(shí)任務(wù)服務(wù)提供crontab命令來(lái)設(shè)定服務(wù)
2. crontab -e // 編輯某個(gè)用戶的cron服務(wù)
3. crontab -l // 列出某個(gè)用戶cron服務(wù)的詳細(xì)內(nèi)容
4. crontab -r // 刪除某個(gè)用戶的cron服務(wù)
crontab格式
分 小時(shí) 日 月 星期 命令
* * * * * *
0-59 0-23 1-31 1-12 0-6 command
注:"*"代表取值范圍內(nèi)的數(shù)組
"/"代表每、比如每分鐘等
*/1 * * * * /usr/bin/php /var/www/html/test.php
|