php如何存到磁盘,php缓存----磁盘缓存
PHP开发也有几个月了,感觉php缓存是很重要的一块,无论是页面级的(主要指smarty)还是dao级的。使用上还不怎么熟,但还是记录下笔记。本篇讲述的缓存是写到磁盘文件,这是看piwik源码时看到的,感觉思想很好,这也得益于PHP的var_export 方法。主要把要保存的内容(int,string,也可以使array)保存为php文件,这样当include这个php文件后,保存的内容就自动当做变量被include进来了。
源码如下:
class Piwik_CacheFile
{
protected $cachePath;
protected $cachePrefix;
function __construct($directory)
{
$this->cachePath = PIWIK_USER_PATH . '/tmp/cache/' . $directory . '/';
}
function get($id)
{
$cache_complete = false;
$content = '';
// We are assuming that most of the time cache will exists
$ok = @include($this->cachePath . $id . '.php');
if ($ok && $cache_complete == true) {
return $content;
}
return false;
}
function set($id, $content)
{
if( !is_dir($this->cachePath))
{
Piwik_Common::mkdir($this->cachePath);
}
if (!is_writable($this->cachePath)) {
return false;
}
$id = $this->cachePath . $id . '.php';
$cache_literal = "
$cache_literal .= "$"."content = ".var_export($content, true).";\n\n";
$cache_literal .= "$"."cache_complete = true;\n\n";
$cache_literal .= "?".">";
// Write cache to a temp file, then rename it, overwritng the old cache
// On *nix systems this should guarantee atomicity
$tmp_filename = tempnam($this->cachePath, 'tmp_');
if ($fp = @fopen($tmp_filename, 'wb')) {
@fwrite ($fp, $cache_literal, strlen($cache_literal));
@fclose ($fp);
if (!@rename($tmp_filename, $id)) {
// On some systems rename() doesn't overwrite destination
@unlink($id);
if (!@rename($tmp_filename, $id)) {
// Make sure that no temporary file is left over
// if the destination is not writable
@unlink($tmp_filename);
}
}
return true;
}
return false;
}
function delete($id)
{
$filename = $this->cachePath . $id . '.php';
if (file_exists($filename)) {
@unlink ($filename);
return true;
}
return false;
}
}
php如何存到磁盘,php缓存----磁盘缓存相关推荐
- 磁盘概述、磁盘缓存、虚拟内存及虚拟内存与内存的交换方式
目录 一.认识磁盘 程序不读入内存就无法运行 二.磁盘缓存 三.虚拟内存 四.虚拟内存与内存的交换方式 一.认识磁盘 磁盘和内存都具有存储功能,它们都是存储设备.区别在于,内存是通过 电流 来实现存储 ...
- linux raid卡缓存,RAID卡的缓存与磁盘自带的缓存的关系
RAID卡的缓存与磁盘自带的缓存的关系 RAID卡是否有(启用)缓存对"随机读写"性能有巨大的影响.中高端的RAID卡都有缓存(价格也高). 那么RAID卡的缓存与磁盘自带的缓存是 ...
- 【Linux】基础IO --- 内核级和用户级缓冲区、磁盘结构、磁盘的分治管理、block group块组剖析…
出身寒微,不是耻辱.能屈能伸,方为丈夫. 文章目录 一.缓冲区(语言级:IO流缓冲,内核级:块缓冲) 1.观察一个现象 2.理解缓冲区存在的意义(节省进程IO数据的时间) 3.语言级缓冲区的刷新策略( ...
- ITOO4.1之缓存—分布式缓存Memcached学习(理论篇)
1. 何为缓存? 缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找.由于缓存的运行速度比内存快 ...
- mybatis的缓存机制(一级缓存二级缓存和刷新缓存)和mybatis整合ehcache
1 查询缓存 1.1 什么是查询缓存 mybatis提供查询缓存,用于减轻数据压力,提高数据库性能. mybaits提供一级缓存,和二级缓存. 一级缓存是SqlSession级别的缓存.在 ...
- mybatis教程--查询缓存(一级缓存二级缓存和整合ehcache)
查询缓存 1 缓存的意义 将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题. 2 mybat ...
- mysql 线程缓存_浅析MySQL内存的使用说明(全局缓存+线程缓存)
首先我们来看一个公式,MySQL中内存分为全局内存和线程内存两大部分(其实并不全部,只是影响比较大的 部分): 复制代码 代码如下: per_thread_buffers=(read_buffer_s ...
- SpringBoot集成Cache缓存(Ehcache缓存框架,注解方式)
1.说明 Spring定义了CacheManager和Cache接口, 用来统一不同的缓存技术, 例如JCache,EhCache,Hazelcast,Guava,Redis等. 本文通过Spring ...
- ❤️缓存集合(一级缓存、二级缓存、缓存原理以及自定义缓存—源码+图文分析,建议收藏) ❤️
❤️缓存集合(一级缓存.二级缓存.缓存原理以及自定义缓存-源码+图文分析,建议收藏) ❤️ 查询 : 连接数据库 ,耗资源!一次查询的结果,给他暂存在一个可以直接取到的地方!--> 内存 : 缓 ...
- 网络io和磁盘io_在磁盘IO上,第1部分:IO的风味
网络io和磁盘io 10月,我将在纽约参加O'Reilly Velocity会议,并发表"当我们谈论磁盘IO时我们谈论的话题"的演讲 . 我决定将我的一些准备笔记发布为一系列博客文 ...
最新文章
- CVPR 2021 | 视觉目标检测大模型GAIA:面向行业的视觉物体检测一站式解决方案
- 容斥原理学习(Hdu 4135,Hdu 1796)
- iPad随想:苹果的妙招、谷歌的尴尬和中移动MM的局限
- 如何使用Java中的UTC或GMT获取当前日期和时间?
- Spring + JDK Timer Scheduler Example--reference
- 如何关闭linux系统中的覆盖输出重定向()功能
- 手机安装python的步骤_小白入门:Python安装的10个步骤,极其细致!!
- Android 去除最上面应用名称及图标
- MATLAB学习笔记之chirp信号的产生
- android 支付宝手势密码锁,Android仿支付宝手势密码解锁功能
- uni-app框架简介
- deepin linux 命令行_deepin-linux常用命令大全----每天一个linux命令 - 子成君-分享出去,快乐加倍!-旧版已停更...
- 协调才暴力-精英乒乓论坛
- 「干货」从动态的角度分析DDR的时序结构
- 红杉资本合伙人Maguire:Crypto将是未来30年最大趋势
- 盘是什么意思计算机网络,hdd网络上什么意思
- 用python画蜡笔小新的步骤_#6.1# 用python画出你的童年回忆
- 短信验证码mysql_短信验证码
- 【开学了】整理各种常用功能的实现 | 小游戏源码分享
- android磁场传感器页面布局在哪,教程:Android传感器—传感器查询demo
热门文章
- linux 下共享库创建及使用
- 如何跟各种人解释什么是产品经理
- 20个顶尖产品经理都在用的APP
- 面试题: Vue中的 computed 和 watch的区别
- 面向对象第七章,内存的管理,面向对象三大特征封装、继承、多态
- sharepoint column中的图片链接不能显示为图片
- FreeSWITCH中文语音包
- 我看360与酷派的“爱情”之争
- 【crunch bang】 tint2-用来控制桌面的布局
- CentOS+postfix+ExtMail+amavisd-new+Spam_Locker+DSpam配置指南:五、配置maildrop