您的位置:首页 > 编程语言 > PHP开发

50. PHP 页面静态化(3)

2015-10-24 12:30 656 查看
如何触发系统生成纯静态页面 — 全部纯静态



比如,如何触发index.php 生成纯静态页面?


1. 页面添加缓存时间



如,让用户访问index.php页面,先判断服务器是否有index.shtml文件,
并且让 index.shtml 生成的时间与当前时间做个对比,
如当前时间减去文件最后的修改时间。这个时间根据业务需求来定。
如果过期,则让动态页面生成新的静态页面;否则,则用已经生成的静态页面。


<?php

// 1.链接数据库,然后从数据库里面获取数据
// 2.把获取到的数据填充到模板文件里面
// 3.需要把动态的页面转化为静态页面,生成纯静态化文件

if(is_file('./index.shtml') && (time()-filemtime('./index.shtml'))<300){
// 如果文件存在,且当前时间 - 文件最后修改时间<300s,则没有失效,直接加载静态文件即可
require_once('./index.shtml');
}else{

//引入数据库操作文件
require_once('./db.php');

$connect = Db::getInstance()->connect();
$sql = "select * from news where `category_id`=1 and `status`=1 order by desc limit 5";
$result = mysql_query($sql,$connect);
$news = array();
while($row = mysql_fetch_array($result))
{
$news[] = $rwo;
}

ob_start();
//引入模板
require_once('./templates/singwa.php');

//第一个参数是我们想要生成的静态文件index.shtml,第二个传我们缓冲区的内容
/*if(file_put_contents('index.shtml',ob_get_clean())){
echo 'Success';
}else{
echo 'Error';
}*/
//不用ob_get_clean(),因为它把缓冲区的内容情况了.ob_get_contents()把信息再终端生成,
并且在服务器缓存
file_put_contents('index.shtml',ob_get_contents());
}




2. 手动触发方式



即设置一个触发方式,触发后,不用判断,直接从数据库取数据,然后填充到模板,最后生成静态文件。


3. crontab 定时扫描程序



// 编辑 crontab
crontab -e




*/1 * * * * php /data/static/index.php


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: