当前位置: 首页 > news >正文

PHP自定义文件缓存实现

文件缓存:可以将PHP脚本的执行结果缓存到文件中。当一个PHP脚本被请求时,先查看是否存在缓存文件,如果存在且未过期,则直接读取缓存文件内容返回给客户端,而无需执行脚本

1、文件缓存写法一,每个文件缓存一个数据,缺点文件可能太多 

function getFileCache($key, $value = null, $expiry = 3600) {$cacheDir = "D:\\phpstudy_pro\\WWW\\cache\\";$cacheFile = $cacheDir . md5($key) . '.txt';if (file_exists($cacheFile) && (time() - filemtime($cacheFile) < $expiry)) {return file_get_contents($cacheFile);}if ($value !== null) {// 将$value参数的值保存到缓存文件中file_put_contents($cacheFile, $value);return $value;}// 保存数据到缓存文件中file_put_contents($cacheFile, $value);return $value;
}// 缓存具体的值
$cacheValue = 'example_value';getFileCache('example_key', $cacheValue);// 使用示例
$data = getFileCache('example_key');
echo $data;

 2、文件缓存写法二,一个文件缓存所有数据,缺点可能文件太大读写变慢

function getFileCache($key, $value = null, $expiry = 3600) {$cacheDir = "D:\\phpstudy_pro\\WWW\\cache\\";$cacheFile = $cacheDir .  'cache.txt';$file=false;if(file_exists($cacheFile)){$file= file_get_contents($cacheFile);}if($file){$data=unserialize($file);}else{$data=[];}if($value){$data[$key]=["data"=>$value,'expiry'=>time()+$expiry];file_put_contents($cacheFile, serialize($data));return true;}else{if(isset($data[$key])&&$data[$key]['expiry']>time()){return  $data[$key]['data'];}return null;}
}
// 缓存具体的值
$cacheValue = 'example_value';
getFileCache('example_key', $cacheValue);
$cacheValue = 'example_value2';
getFileCache('example_key2', $cacheValue);
// 使用示例
$data = getFileCache('example_key');
var_dump($data);
$data2 = getFileCache('example_key2');
var_dump($data2);

http://www.lryc.cn/news/214254.html

相关文章:

  • 猫耳 Android 播放框架开发实践
  • linux下df -h 命令一直卡住的解决方法
  • 系统架构设计热点知识
  • 2023-在mac下安装Homebrew的国内镜像
  • Ubuntu 20.04设置虚拟内存 (交换内存swap)解决内存不足
  • RabbitMQ-死信交换机和死信队列
  • [HNCTF 2022 WEEK2]easy_include 文件包含遇上nginx
  • python中transform和apply的区别是什么
  • TCP 协议
  • Azure机器学习 - 在 Azure 机器学习中上传、访问和浏览数据
  • 新建包含cuda和cudnn的docker
  • Opensips安装配置(以下操作均已centOS 6.3系统为准)
  • 第03章 用户与权限管理
  • 赋能制造业高质量发展,释放采购数字化新活力——企企通亮相武汉2023国际智能制造创新论坛
  • 洗地新天花板:CEYEE希亦顶配机皇T800 Pro洗地机多点发力上市开售
  • 如何创建一个react项目
  • 面试算法49:从根节点到叶节点的路径数字之和
  • http1,https,http2,http3总结
  • stable-diffusion-webui环境部署
  • 使用Ansible中的playbook
  • 模型应用系实习生-模型训练笔记(更新至线性回归、Ridge回归、Lasso回归、Elastic Net回归、决策树回归、梯度提升树回归和随机森林回归)
  • 【Verilog】7.2.1 Verilog 并行 FIR 滤波器设计
  • 【音视频 | wav】wav音频文件格式详解——包含RIFF规范、完整的各个块解析、PCM转wav代码
  • 人工智能基础_机器学习012_手写梯度下降代码演示_手动写代码完成梯度下降_并实现梯度下降可视化---人工智能工作笔记0052
  • Docker安装部署[8.x]版本Elasticsearch+Kibana+IK分词器
  • 折纸达珠峰高度(forwhile循环)
  • 探索网络攻防技术:自学之道
  • 图像二值化阈值调整——cv2.threshold方法
  • 【C++代码】背包问题,完全背包,多重背包,打家劫舍,动态规划--代码随想录
  • 阿里云创始人王坚:云计算和GPT的关系,就是电和电机的关系