【opencart3源码分析】文件缓存类file.php
<?php
namespace Session;
/*** 文件缓存类* @package Session*/
class File {private $directory;// 读取缓存public function read($session_id) {$file = DIR_SESSION . 'sess_' . basename($session_id);if (is_file($file)) {$size = filesize($file);if ($size) {$handle = fopen($file, 'r');flock($handle, LOCK_SH);$data = fread($handle, $size);flock($handle, LOCK_UN);fclose($handle);return unserialize($data);}}return array();}// 写入缓存public function write($session_id, $data) {$file = DIR_SESSION . 'sess_' . basename($session_id);$handle = fopen($file, 'w');flock($handle, LOCK_EX);fwrite($handle, serialize($data));fflush($handle);flock($handle, LOCK_UN);fclose($handle);return true;}// 销毁缓存public function destroy($session_id) {$file = DIR_SESSION . 'sess_' . basename($session_id);if (is_file($file)) {unlink($file);}}public function __destruct() {if (ini_get('session.gc_divisor')) {$gc_divisor = ini_get('session.gc_divisor');} else {$gc_divisor = 1;}if (ini_get('session.gc_probability')) {$gc_probability = ini_get('session.gc_probability');} else {$gc_probability = 1;}if ((rand() % $gc_divisor) < $gc_probability) {$expire = time() - ini_get('session.gc_maxlifetime');$files = glob(DIR_SESSION . 'sess_*');foreach ($files as $file) {if (filemtime($file) < $expire) {unlink($file);}}}}
}
【opencart3源码分析】文件缓存类file.php相关推荐
- v62.02 鸿蒙内核源码分析(文件概念) | 为什么说一切皆是文件 | 百篇博客分析OpenHarmony源码
司马牛忧曰:"人皆有兄弟,我独亡."子夏曰:"商闻之矣:死生有命,富贵在天.君子敬而无失,与人恭而有礼.四海之内,皆兄弟也.君子何患乎无兄弟也?" <论语 ...
- Android UIL图片加载缓存源码分析-内存缓存
本篇文章我们来分析一下著名图片加载库Android-Universal-Image-Loader的图片缓存源码. 源码环境 版本:V1.9.5 GitHub链接地址:https://github.co ...
- springfox源码_springfox 源码分析(四) 配置类初始化
时间:2019-5-23 12:46:50 地点:单位.家中 @EnableSwagger2 有了二三章的理解,此时我们再来看EnableSwagger2注解的内容 @Retention(value ...
- 【Laravel3.0.0源码阅读分析】文件缓存类file.php
<?php namespace Laravel\Cache\Drivers;class File extends Driver {/*** The path to which the cache ...
- php源码哪些文件是主程序,ThinkPHP源码分析之核心类文件的加载
研究了下TP的加载机制,以下是我的一些总结: 1.首先由应用入口文件index.php引入TP入口文件ThinkPHP.php 2.ThinkPHP.php里主要是定义一些系统常量,URL模式定义,系 ...
- java disruptor压测_Java并发框架Disruptor实现原理与源码分析(二) 缓存行填充与CAS操作...
##缓存行填充 关于缓存行填充在我个人的印象里面第一次看到是在Java的java.util.concurrent包中,因为当时很好奇其用法背后的逻辑,所以查了很多资料才明白到底是怎么回事*(也许事实上 ...
- SugarCRM源码分析之缓存
本篇分析下SugarCRM的缓存,缓存文件主要存放在./include/SugarCache里,实例化主要是SugarCache::instance()方法来实现. // ./include/Suga ...
- PyTorch 源码分析:Optimizer类
PyTorch对Optimizer类的实现大部分都在Python上,只有计算用到了C++的部分,所以还是可以继续分析的. 总览 Optimizer类是所有具体优化器类的一个基类.下面一幅图表示一下. ...
- Redis源码分析之工具类util
在redis源码中的辅助工具类中,主要包括大小端转换.SHA算法以及util.h中对应的算法. 大小端转换: LittleEndian:低位字节数据存放于低地址,高位字节数据存放于高地址. BigEn ...
最新文章
- 通过WebAssembly在浏览器运行PHP
- python2.7抓取豆瓣电影top250
- Python入门 io篇
- OpenCV中OpponentColorDescriptorExtractor
- 【学习笔记】 Javascript定时器
- 2020南大计科考研实记(受难三跨)
- 错误make: nvcc: Command not found 解决方案
- java oauth2.0_OAuth 2.0 Java指南:5分钟保护您的应用程序安全
- 浅谈传统企业网络运营那些事儿
- Django项目部署在Centos7
- 开始学习 PixiJS
- 非名校毕业,如何在六天面试六家顶尖科技公司,并拿到全部Offer?
- 阿里巴巴Java编程规范考试
- Java程序员3个月从月薪6k涨到15k,你知道我是怎么过来的吗?
- 工程项目全过程,工程项目建设分为几个阶段?
- OPTEE的系统调用
- 树莓派用iPad做显示器
- java 生成kml文件_如何使用kml文件在地图上绘制路径?
- 音视频技术之《移动直播秒开优化经验》
- 近期有面试的必看!带你手撸红黑树,终获offer