存储驱动完成了不同环境下面的文件存取操作,也是ThinkPHP支持分布式和云平台的基础。

默认的存储驱命名空间位于Think\Storage\Driver,每个存储驱动必须继承Think\Storage,并且实现下列接口方法(具体参数可以参考现有的存储驱动类库):

驱动方法 方法说明
架构方法 __construct($config='')
读取文件内容 read($filename,$type='')
写文件 put($filename,$content,$type='')
文件追加 append($filename,$content,$type='')
加载文件 load($filename,$vars=null,$type='')
判断文件是否存在 has($filename,$type='')
删除文件 unlink($filename,$type='')
读取文件信息 get($filename,$name,$type='')

其中type参数是为了区分不同的读写场景而设置的。

目前使用到的场景包括 runtime(用于编译缓存的文件操作)大理石构件厂家、html(用于静态缓存的文件操作)和F(用于F函数的文件操作)。

要使用自己定义的存储驱动的话,需要在应用入口文件定义:

  1. define('STORAGE_TYPE', 'MyStorage');

存储类型的特殊性决定了我们只能在入口文件中改变存储类型

 

thinkphp 储存驱动的更多相关文章

  1. ThinkPHP Mongo驱动update方法支持upsert参数

    Mongo数据库update操作有一个相对于Mysql的关键特性,它可以使用upsert模式,当更新的数据不存在时,直接插入,但是ThinkPHP的Mongo驱动居然不支持这一特性,没办法,自力更生了 ...

  2. thinkphp 模板驱动

    模板引擎驱动完成了第三方模板引擎的支持,通过定义模板引擎驱动,我们可以支持Smarty.TemplateLite.SmartTemplate和EaseTemplate等第三方模板引擎. 默认的模板引擎 ...

  3. thinkphp session驱动

    默认的session驱动的命名空间是Think\Session\Driver,并实现下面的驱动接口:大理石构件哪家好 方法说明 接口方法 打开Session open($savePath, $sess ...

  4. thinkphp 日志驱动

    日志驱动默认的命名空间位于Think\Log\Driver,驱动类需要实现的接口方法包括: 方法 说明 架构方法 __construct($config=array()) 写入方法 write($lo ...

  5. thinkphp 缓存驱动

    缓存驱动默认位于Think\Cache\Driver命名空间下面,目前已经提供了包括APC.Db.Memcache.Shmop.Sqlite.Redis.Eaccelerator和Xcache缓存方式 ...

  6. ThinkPHP数据库驱动之mysql事物回滚

    1.开启事务方法 startTrans()2.事务提交方法 commit()3.事务回滚方法 rollback() 用法例子: $order = M(‘order’); $allAdded = tru ...

  7. Docker Daemon 参数最佳实践

    1. Docker Daemon 配置参数 限制容器之间网络通信 在同一台主机上若不限制容器之间通信,容器之间就会暴露些隐私的信息,所以推荐关闭 docker daemon –icc=false 使用 ...

  8. centos7.0安装docker-18.06.1-ce不能启动问题

    最近用centos7.0 yum安装了一个docker-ce18.06.1  但是发现安装好不能启动,于是上官网看了一下,说是docker-ce18.06.1是从centos7.2开始支持的,但是7. ...

  9. SDIO总线(一)

    SDIO接口是在SD内存卡接口的基础上发展起来的接口.SDIO接口兼容曾经的SD内存卡.而且能够连接SDIO接口的设备. SDIO1.0标准定义了两种类型的SDIO卡: 1.全速的SDIO卡.传输率能 ...

随机推荐

  1. 前端学习(一)html标签(笔记)

    html->标签 标题标签:<h1>标题文字</h1>段落标签:<p>段落文字</p>换行标签:<br/>图片标签:<img s ...

  2. kubernetes报错

    错误信息:执行yaml文件后,服务在运行,但是提示命令找不到 原因:没有环境,相当于只有一个快捷方式 环境目录为/usr/local/bin 解决办法:将/etc/ansible/bin下的文件都拷贝 ...

  3. 【转载】网易极客战记官方攻略-地牢-严酷考验 B

    关卡连接:https://codecombat.163.com/play/level/the-gauntlet-b 免费试玩:https://codecombat.163.com/play 使用你的所 ...

  4. js 实现弹出层效果

    代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <tit ...

  5. siege之-服务端性能测试

    官方网站http://www.joedog.org/ 有3种操作模式: 1) Regression (when invoked by bombardment)Siege从配置文件中读取URLs,按递归 ...

  6. Java-Class-C:com.ylbtech.api.platfrom.util.RedisUtils.class

    ylbtech-Java-Class-C:com.ylbtech.api.platfrom.util.RedisUtils.class 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶 ...

  7. java lambda filter写法

    datas.stream().filter(m->!m.getSerialId().equals(setting.getSerialId())).collect(Collectors.toLis ...

  8. CentOS6 图形界面(gnome)安装

    CentOS6相对于CentOS5的安装有了不少的进步,有不少默认的选项可以选择,如: Desktop :基本的桌面系统,包括常用的桌面软件,如文档查看工具. Minimal Desktop :基本的 ...

  9. 2019杭电多校第三场hdu6609 Find the answer(线段树)

    Find the answer 题目传送门 解题思路 要想变0的个数最少,显然是优先把大的变成0.所以离散化,建立一颗权值线段树,维护区间和与区间元素数量,假设至少减去k才能满足条件,查询大于等于k的 ...

  10. CSP2019总结

    CSP2019总结 前言 赛前停课集训了两个星期,自认为已经准备充分了,结果... 不知道有没有写挂分,即使一分没挂,满打满算也只有400出头,还是太菜了. Day0 晚上复习了一会,打了会游戏就睡了 ...