<?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相关推荐

  1. v62.02 鸿蒙内核源码分析(文件概念) | 为什么说一切皆是文件 | 百篇博客分析OpenHarmony源码

    司马牛忧曰:"人皆有兄弟,我独亡."子夏曰:"商闻之矣:死生有命,富贵在天.君子敬而无失,与人恭而有礼.四海之内,皆兄弟也.君子何患乎无兄弟也?" <论语 ...

  2. Android UIL图片加载缓存源码分析-内存缓存

    本篇文章我们来分析一下著名图片加载库Android-Universal-Image-Loader的图片缓存源码. 源码环境 版本:V1.9.5 GitHub链接地址:https://github.co ...

  3. springfox源码_springfox 源码分析(四) 配置类初始化

    时间:2019-5-23 12:46:50 地点:单位.家中 @EnableSwagger2 有了二三章的理解,此时我们再来看EnableSwagger2注解的内容 @Retention(value ...

  4. 【Laravel3.0.0源码阅读分析】文件缓存类file.php

    <?php namespace Laravel\Cache\Drivers;class File extends Driver {/*** The path to which the cache ...

  5. php源码哪些文件是主程序,ThinkPHP源码分析之核心类文件的加载

    研究了下TP的加载机制,以下是我的一些总结: 1.首先由应用入口文件index.php引入TP入口文件ThinkPHP.php 2.ThinkPHP.php里主要是定义一些系统常量,URL模式定义,系 ...

  6. java disruptor压测_Java并发框架Disruptor实现原理与源码分析(二) 缓存行填充与CAS操作...

    ##缓存行填充 关于缓存行填充在我个人的印象里面第一次看到是在Java的java.util.concurrent包中,因为当时很好奇其用法背后的逻辑,所以查了很多资料才明白到底是怎么回事*(也许事实上 ...

  7. SugarCRM源码分析之缓存

    本篇分析下SugarCRM的缓存,缓存文件主要存放在./include/SugarCache里,实例化主要是SugarCache::instance()方法来实现. // ./include/Suga ...

  8. PyTorch 源码分析:Optimizer类

    PyTorch对Optimizer类的实现大部分都在Python上,只有计算用到了C++的部分,所以还是可以继续分析的. 总览 Optimizer类是所有具体优化器类的一个基类.下面一幅图表示一下. ...

  9. Redis源码分析之工具类util

    在redis源码中的辅助工具类中,主要包括大小端转换.SHA算法以及util.h中对应的算法. 大小端转换: LittleEndian:低位字节数据存放于低地址,高位字节数据存放于高地址. BigEn ...

最新文章

  1. 通过WebAssembly在浏览器运行PHP
  2. python2.7抓取豆瓣电影top250
  3. Python入门 io篇
  4. OpenCV中OpponentColorDescriptorExtractor
  5. 【学习笔记】 Javascript定时器
  6. 2020南大计科考研实记(受难三跨)
  7. 错误make: nvcc: Command not found 解决方案
  8. java oauth2.0_OAuth 2.0 Java指南:5分钟保护您的应用程序安全
  9. 浅谈传统企业网络运营那些事儿
  10. Django项目部署在Centos7
  11. 开始学习 PixiJS
  12. 非名校毕业,如何在六天面试六家顶尖科技公司,并拿到全部Offer?
  13. 阿里巴巴Java编程规范考试
  14. Java程序员3个月从月薪6k涨到15k,你知道我是怎么过来的吗?
  15. 工程项目全过程,工程项目建设分为几个阶段?
  16. OPTEE的系统调用
  17. 树莓派用iPad做显示器
  18. java 生成kml文件_如何使用kml文件在地图上绘制路径?
  19. 音视频技术之《移动直播秒开优化经验》
  20. 近期有面试的必看!带你手撸红黑树,终获offer

热门文章

  1. linux下intel安装教程,在 Ubuntu 15.10 上安装 Intel Graphics 安装器
  2. pytorch历史版本下载
  3. c语言if语句写在参数里,c语言ifthen语句
  4. 【狮子数学】05极限的计算——数列极限的计算
  5. 数控系统ftp服务器,DNC数控机床联网方案.doc
  6. 怎么把固定的电脑IP 改为自动获取
  7. day008--mysql中的字符串函数
  8. 2017酷家乐秋招笔试题——后台开发
  9. 微信小程序-(js和wxml中)utils公共方法使用
  10. 【答疑】如何利用碎片化时间?