1. PDO方式连接数据库类
<?php

/**
* @author 黄功延
* createTime 2018/5/28 0028 09:44
*/
class Db {
//私有化数据库连接数据,可以通过getInstance传入自己的连接数据来进行指定数据库连接(写框架的基础)
private $config = [
'dbname' => 'shunk',
'username' => 'root',
'password' => 'root'
]; private static $instance =null;
private $conn = null; //私有化构造方法,防止外部实例化这个类,即防止 new Db()
private function __construct() {
$this->connect();
}
//私有化克隆方法,防止外部克隆复制这个类
private function __clone() {
// TODO: Implement __clone() method.
}
//保证继承单一性,外部只能通过这个静态方法访问这个类
public static function getInstance(){ if(!(self::$instance instanceof self)){
self::$instance = new self();
}
return self::$instance;
} //PDO方式连接数据库的方法
private function connect(){
try{
$dns = 'mysql:dbname='.$this->config['dbname'].';host=localhost;port=3306;charset=utf8';
$this->conn = new PDO($dns,$this->config['username'],$this->config['password']);
$this->conn->query('SET NAMES utf8');
}catch (PDOException $e){
die('数据库连接失败'.$e->getMessage());
}
}
//查询一条记录
public function fetch($sql){ return $this->conn->query($sql)->fetch(PDO::FETCH_ASSOC);
}
//查询多条记录
public function fetchAll($sql){ return $this->conn->query($sql)->fetchAll(PDO::FETCH_ASSOC);
}
//增删改方法,删改成功返回受影响的行数。插入成功返回插入的id值
public function exec($sql){
$num = $this->conn->exec($sql);
if($num){
if('0' != $this->conn->lastInsertId()){
return $this->conn->lastInsertId();
}
return $num;
}else{
$error = $this->conn->errInfo();
return '操作失败'.$error[0].':'.$error[1].','.$error[2];
} }
}

   2.缓存PHP文件

<?php
/**
* @author 黄功延
* createTime 2018/5/28 0028 09:06
*/ $fileName = '../runtime/fileCache.php';
$time = 15;
//判断缓存文件是否存在和缓存文件是否过期
if(file_exists($fileName) && (filemtime($fileName)+$time) >= time()){
include ('../runtime/fileCache.php');
}else{
ob_start(); //开启内存缓存
include ('../Db.php'); $db = Db::getInstance();
$sql = 'select * from sk_url';
$info = $db->fetchAll($sql); include 'index1.php';
$str = ob_get_contents(); //得到缓存区内容
file_put_contents($fileName,$str); //写入缓存 ob_flush(); //关闭内存缓存
}

  3.html文件

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>测试</title>
</head>
<body> <table width="600" border="1" style="width: 700px; margin: 0 auto;">
<thead>
<tr>
<th>id</th>
<th>url</th>
<th>short</th>
<th>status</th>
<th>create_time</th>
</tr>
</thead>
<tbody>
<?php foreach ($info as $v){;?>
<tr>
<td><?php echo $v['id'];?></td>
<td><?php echo $v['url'];?></td>
<td><?php echo $v['short'];?></td>
<td><?php echo $v['status'];?></td>
<td><?php echo $v['create_time'];?></td>
</tr>
<?php };?>
</tbody> </table>
</body>
</html>

到此文件缓存的简单例子就完成了

php 的file 缓存的更多相关文章

  1. File缓存

    /**      * 保存对象      * @param ser      * @param file      * @throws IOException      */     public b ...

  2. Laravel之路——file缓存修改为redis缓存

    1.Session: 修改.evn文件: SESSION_DRIVER:redis (如果还不行的话,修改config/session.php的driver) 2.缓存修改为redis 注意:使用 L ...

  3. django 缓存、中间件、信号、CSRF 详解

    中间件 django 中的中间件(middleware),在django中,中间件其实就是一个类,在请求到来和结束后,django会根据自己的规则在合适的时机执行中间件中相应的方法. 在django项 ...

  4. php使用文件缓存

    使用php读取mysql中的数据很简单,数据量不大的时候,mysql的性能还是不错的.但是有些查询可能比较耗时,这时可以把查询出的结果,缓存起来,减轻mysql的查询压力. 缓存的方法有几种:使用me ...

  5. ThinkPHP的缓存技术

    原文:ThinkPHP的缓存技术 如果没有缓存的网站是百万级或者千万级的访问量,会给数据库或者服务器造成很大的压力,通过缓存,大幅减少服务器和数据库的负荷.假如我们 把读取数据的过程分为三个层,第一个 ...

  6. Discuz的缓存体系

    参考文档:<http://dev.discuz.org/wiki/index.php?title=缓存机制> Discuz中涉及数据缓存的地方有: 1. session Dz的sessio ...

  7. php 文件缓存

    http://www.oschina.net/code/snippet_162279_6098 <?php class cache {       private static $_instan ...

  8. php文件缓存

    1.最新代码 <?php class cache { private static $_instance = null; protected $_options = array( 'cache_ ...

  9. php 缓存 加速缓存

    PHP四大加速缓存器opcache,apc,xcache,eAccelerator eAccelerator,xcache,opcache,apc(偏数据库缓存,分系统和用户缓存)是PHP缓存扩展, ...

随机推荐

  1. 固定表头的table

    在前端的开发过程中,表格时经常使用的一种展现形式.在我的开发过程中,当数据过多时,最常用的一种方式就是分页,但是有些地方还是需要滚动.通常的table 会随着滚动,导致表头看不见.一下是我找到的一种固 ...

  2. NTT - 牛客

    链接:https://www.nowcoder.com/acm/contest/133/D来源:牛客网 题目描述 Applese打开了m个QQ群,向群友们发出了组队的邀请.作为网红选手,Applese ...

  3. Django后台管理系统的使用

    目录 django后台管理系统的使用 检查配置文件 检查根urls.py文件 启动项目,浏览器输入ip端口/admin 如: 127.0.0.1/8000/admin 回车 注册后台管理系统超级管理 ...

  4. Go 每日一库之 viper

    简介 上一篇文章介绍 cobra 的时候提到了 viper,今天我们就来介绍一下这个库. viper 是一个配置解决方案,拥有丰富的特性: 支持 JSON/TOML/YAML/HCL/envfile/ ...

  5. squeeze(s1,s2),将字符串s1中任何与字符串s2中匹配的字符都删除

    void squeeze(char a[],char b[]) { //要实现把s2的任意字符如果出现的话就在s1中删除 //1.首先判断s1[j]==s2[i]&&s1[j]=='\ ...

  6. 个人第四次作业--Alpha项目测试

    这个作业属于哪个课程 https://edu.cnblogs.com/campus/xnsy/GeographicInformationScience 这个作业要求在哪里 https://www.cn ...

  7. beta版本发布说明与总结

    1.发布说明: 软件介绍: deta版本的发布最终是一个可安装使用的窗体程序,已经由Alpha版本的应用解决方案完成到一个程序: deta版本解决了Alpha版本遗留的软件技术方面错误问题,以及针对有 ...

  8. ASP.Net Core 发布到IIS Http Error 502.5 官方解决办法

    Http Error 502.5 - Process Failure 在IIS上发布.NET Core程序出现这个错误.网上搜索到的办法为什么总行不通呢? 有可能年代久远,现在的环境与当年不同,所以解 ...

  9. Java之函数式接口@FunctionalInterface详解(附源码)

    Java之函数式接口@FunctionalInterface详解 函数式接口的定义 在java8中,满足下面任意一个条件的接口都是函数式接口: 1.被@FunctionalInterface注释的接口 ...

  10. 小白学Java:I/O流

    目录 小白学Java:I/O流 基本分类 发展史 文件字符流 输出的基本结构 流中的异常处理 异常处理新方式 读取的基本结构 运用输入与输出 文件字节流 缓冲流 字符缓冲流 装饰设计模式 转换流(适配 ...