7.20php文件缓存

Posted sun1987

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7.20php文件缓存相关的知识,希望对你有一定的参考价值。

<?php
    $filename = "./jingtai.html";//定义一个变量来存放一个缓存文件的路径(相对于当前页面的路径)
    //定义缓存有效期
    $cachetime = 10;

    //判断缓存文件是否存在                                   
    var_dump(filemtime($filename));
                                //filemtime($filename)不变,time()一直变,filemtime($filename)+10肯定会有小于time()的时候。
    if(!file_exists($filename)||filemtime($filename)+$cachetime<time()){//filemtime($filename)获取文件修改时间,加上定义的缓存时间小于当前时间
         //开启内存缓存                                  //filemtime()该文件上次修改内容
                               //filemtime($filename)第一次出现等于当前时间time();每过10秒走一次函数,filemtime($filename)的值就会改变
        var_dump(time());
        ob_start();
?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>
    <body>
        <table width="100%" border="1" cellpadding="0" cellspacing="0" >
            <tr>
                <td>学号</td>
                <td>姓名</td>
                <td>性别</td>
                <td>生日</td>
                <td>班级</td>
            </tr>         
<?php
            //造连接对象
            $db = new mysqli("localhost","root","","ceshi");
            //写SQL语句
            $sql = "select * from student";
            //执行
            $result = $db->query($sql);
            while($attr = $result->fetch_row()){
                echo "<tr>
                    <td>{$attr[0]}</td>
                    <td>{$attr[1]}</td>
                    <td>{$attr[2]}</td>
                    <td>{$attr[3]}</td>
                    <td>{$attr[4]}</td>
                    </tr>";
            }
?>
        </table> 
    </body>
    </html>
<?php
        //从内存缓存中获取页面代码
        $content = ob_get_contents();
        //将获取到的内容存放到缓存文件
        file_put_contents($filename,$content);
        //清掉内存缓存
        ob_flush();
        echo "#####";  //测试是否调用了缓存文件,缓存文件不输出这句话
    }
    else{
         //var_dump(filemtime($filename)); var_dump(time());
         include($filename);  //如果存在,调用缓存文件
    }
 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head>
    <body>
        <table width="100%" border="1" cellpadding="0" cellspacing="0" >
            <tr>
                <td>学号</td>
                <td>姓名</td>
                <td>性别</td>
                <td>生日</td>
                <td>班级</td>
            </tr>         
<tr>
                    <td>1</td>
                    <td>101</td>
                    <td>王超</td>
                    <td>男</td>
                    <td>2000-02-12 00:00:00</td>
                    </tr><tr>
                    <td>2</td>
                    <td>103</td>
                    <td>陆君</td>
                    <td>男</td>
                    <td>1974-06-03 00:00:00</td>
                    </tr><tr>
                    <td>3</td>
                    <td>105</td>
                    <td>匡明</td>
                    <td>男</td>
                    <td>1975-10-02 00:00:00</td>
                    </tr><tr>
                    <td>4</td>
                    <td>107</td>
                    <td>王丽</td>
                    <td>女</td>
                    <td>1976-01-23 00:00:00</td>
                    </tr><tr>
                    <td>5</td>
                    <td>108</td>
                    <td>曾华</td>
                    <td>男</td>
                    <td>1977-09-01 00:00:00</td>
                    </tr><tr>
                    <td>6</td>
                    <td>109</td>
                    <td>王芳</td>
                    <td>女</td>
                    <td>1975-02-10 00:00:00</td>
                    </tr><tr>
                    <td>7</td>
                    <td>110</td>
                    <td>刘备</td>
                    <td>男</td>
                    <td>0000-00-00 00:00:00</td>
                    </tr><tr>
                    <td>8</td>
                    <td>111</td>
                    <td>孙权1</td>
                    <td>男</td>
                    <td>0000-00-00 00:00:00</td>
                    </tr><tr>
                    <td>9</td>
                    <td>112</td>
                    <td>曹操</td>
                    <td>男</td>
                    <td>0000-00-00 00:00:00</td>
                    </tr><tr>
                    <td>10</td>
                    <td>113</td>
                    <td>刘邦</td>
                    <td>男</td>
                    <td>0000-00-00 00:00:00</td>
                    </tr><tr>
                    <td>11</td>
                    <td>114</td>
                    <td>周瑜</td>
                    <td>男</td>
                    <td>0000-00-00 00:00:00</td>
                    </tr><tr>
                    <td>17</td>
                    <td>098</td>
                    <td>zhangsan32</td>
                    <td>男</td>
                    <td>0000-00-00 00:00:00</td>
                    </tr>        </table> 
    </body>
    </html>

 

以上是关于7.20php文件缓存的主要内容,如果未能解决你的问题,请参考以下文章

Yii2片段缓存详解

phalcon: 缓存片段,文件缓存,memcache缓存

代码片段 PHP,预期文件结尾,我错在哪里?

PHP常用代码片段

yii使用之缓存

PHP代码篇--php实现文件缓存的读写