PHP中文件缓存转内存缓存的方法

2015-01-24信息快讯网

顾名思义文件缓存转内存缓存就是将存储在文件中的数据转到内存中去,实现磁盘操作转为内存操作,这样可以大大提高数据访问速度,并能实现缓存数据的分布式部署。文件缓存与内存缓存的介绍请参考名词解释部分

前言
顾名思义文件缓存转内存缓存就是将存储在文件中的数据转到内存中去,实现磁盘操作转为内存操作,这样可以大大提高数据访问速度,并能实现缓存数据的分布式部署。文件缓存与内存缓存的介绍请参考名词解释部分。

原理
文件缓存转内存缓存的原理就是把文件缓存中的数据转存到内存中,以实现数据全局共享,解决频繁加载文件和装载数据的问题,采用Memcache工具实现内存缓存数据。

实现机制与步骤
1,检查文件是否存在内存缓存,如果不存在加载缓存文件
2,加载缓存文件,并获取缓存文件中的数据
3,将缓存文件中的数据写入内存
4,从内存中获取数据,并将数据注册为全局变量
5,返回数据

这个过程中最主要处理两个问题,第一个问题是缓存文件加载,如果要实现文件缓存转内存缓存,就需要有一个统一的文件缓存路径调度服务,用于实现文件是否实现内存缓存机制。第二个问题是如何注册全局变量,不管是从文件中获取数据还是内存中获取,如果需要实现通用,就需要有一个注册全局变量的机制。

文件缓存路径调度服务这个问题实现比较简单,但成本比较高,因为需要重构现在的文件缓存加载路径方式。

普通的文件缓存加载方式

require 'cache/config.php';

文件缓存路径调度方式

require getCachePath('cache/config.php');

上例中getCachePath()函数实现文件缓存路径调度服务。

其次是注册全局变量问题,需要考虑到数据的全局通用性,因此在使用上就有很多的注意事项,经过研究发现如下两种注册全局变量方式
1,循环注册
 
foreach ( $vars as $k => $v ) { 
$GLOBALS[$k] = $v; 
} 

优点:重复键的情况下可保证最新的值正常
缺点:$vars数组的大小决定执行时间

2,直接追加

$GLOBALS += $vars;

优点:无循环,直接操作
缺点:如果键存在则不能写入

总结
文件缓存转内存缓存最主要处理文件加载方式与全局变量注册,在实际的应用过程中,要特别注意各缓存文件中变量名的不同,如果变量名存在相同,则可能在多个文件加载过程中造成数据覆盖。

在具体的开发实践中,能使用内存缓存则直接使用内存缓存,同时如果存在大量文件缓存加载的情况下,考虑实现文件缓存转内存缓存的机制。


名词解释
文件缓存是指将从数据库获取的数据存入文件中,这样下一次获取数据的时候就不需要从数据库获取而直接从文件中获取,这样就能够提升数据的访问速度,因此在很多的开源程序代码中都能看文件缓存的应用。

内存缓存是指将从数据库获取的数据存入内存中,目前应用比较广泛的如Memcache。
PHP文件缓存内容保存格式实例分析
深入PHP与浏览器缓存的分析
基于php下载文件的详解
基于php缓存的详解
PHP 处理TXT文件(打开/关闭/检查/读取)
深入PHP数据缓存的使用说明
解析PHP缓存函数的使用说明
解析用PHP读写音频文件信息的详解(支持WMA和MP3)
php获取本地图片文件并生成xml文件输出具体思路
php笔记之:有规律大文件的读取与写入的分析
php页面消耗内存过大的处理办法
smarty 缓存控制前的页面静态化原理
phpExcel导出大量数据出现内存溢出错误的解决方法
如何获知PHP程序占用多少内存(memory_get_usage)
PHP管理内存函数 memory_get_usage()使用介绍
PHP中使用unset销毁变量并内存释放问题
采用PHP函数memory_get_usage获取PHP内存清耗量的方法
php urlencode()与urldecode()函数字符编码原理详解
遍历指定目录下的所有目录和文件的php代码
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
php 伪造本地文件包含漏洞的代码
PHP读取txt文件的内容并赋值给数组的代码
php中批量修改文件后缀名的函数代码
PHP禁止页面缓存的代码
php 文件缓存函数
简单的PHP缓存设计实现代码
深入探讨PHP中的内存管理问题
PHP缓存技术的使用说明
PHP查询MySQL大量数据的时候内存占用分析
一个PHP缓存类代码(附详细说明)
PHP大批量数据操作时临时调整内存与执行时间的方法
PHP Session_Regenerate_ID函数双释放内存破坏漏洞
©2014-2024 dbsqp.com