自己写的一个文件缓存类,可以控制缓存碎片文件的数目。
前几天需要用到一个数据缓存的方法。
去网上找了一圈,发现大多数方法不是把所有的缓存数据都存到同一个文件。
或者就是把每条缓存记录都存到一个单独的文件。
然后,这些东西并不能达到我的要求。
于是想自己写一个自己用的缓存类。
PHP文件缓存。
参考ThinkPHP框架文件缓存的部分概念。
由于把所有的数据都存到一个缓存文件中,会导致文件越来越大,到了一定程度以后,反而会降低IO速度。
因为每次读写数据,都要把文件加载到内存,然后整理出来。在写入到文件。
而每个记录都存到单独的一个目录(ThinkPHP就是这样),确实挺好,
但是,时间久了,数据量很多的时候,单个目录下会有非常多的缓存文件。
磁盘IO效率又变得不高了,而且,单个目录下的文件数量是有限的。
我写的这个缓存类,会根据配置,把文件分散到一定数量的文件夹
而且能限制单个文件夹内的文件数量。
并且,这些数量是可以控制,可预见的。
数据达到一定量以后,肯定会保证只有这么多目录。这么多文件出现。
合理的控制数目,就可以达到尽可能高效的处理缓存了。
代码截图
欢迎各路大牛优化代码,修改代码。优化后也请再发我一份。谢谢。
链接: http://pan.baidu.com/s/1mgMN536 密码: b5fj
PHP新技术
不太了解php ,尝试应用了下,效果很好,感谢作者无私风险,请教个小问题,不使用 fopen + flock去控制的话, 在高并发下读取会不会有问题?感谢回复
这个没有具体测试在极端情况下性能情况.一切都是基于原理假设的.
大型项目还是更建议使用专业的解决方案.
理论是读取时问题应该不大.
然而实际上和理论还是有区别的.
谢谢支持.