标 题: 【原创】动态网页静态化(求邀请码)
作 者: tamude
时 间: 2010-12-01,04:07:02
链 接: http://bbs.pediy.com/showthread.php?t=125764
在看雪注册了好长时间,最近才发现是个临时会员,纠结!(第一次发帖)
思路:
1. 根据网站数据库的设计,生成静态页面与目录的配对数组
2.把生成的静态页面与目录的配对数组系列化写入一个文件
3.读取系列化的配对数组文件,把动态页面静态化
4.如果静态化失败,创建一个文件(相当于缓存),记录失败的位置,刷新之后,从失败的位置开始继续生成静态页面直至完成
静态页面与目录的配对数组结构($aUrl2Dir):
程序如下:<?php
/*
*$sFailFileName:记录失败位置的文件名
*$aUrl2Dir:静态页面与目录的配对数组
*/
function makeHtml($sFailFileName, $aUrl2Dir) {
if(!file_exists($sFailFileName)) {
foreach($aUrl2Dir as $iKey=>$aUrl2DirDetail) {
$aFailPosition = array();
$aFailPosition[$iKey]['url'] = $aUrl2DirDetail['url'];
$aFailPosition[$iKey]['dir'] = $aUrl2DirDetail['dir'];
$sFailPosition = serialize($aFailPosition);
file_put_contents("$sFailFileName", $sFailPosition);
$sContent = file_get_contents("$aUrl2DirDetail[url]");
file_put_contents("$aUrl2DirDetail[dir]", $sContent);
if($iKey == count($aUrl2Dir)-1) {
echo ($iKey+1) . "products documents created!";
exit(0);
}
}
} else {
$sFailPositionContent = file_get_contents("$sFailFileName");
$aFailPositionArr = unserialize($sFailPositionContent);
$iKey = 0;
foreach($aFailPositionArr as $iFailKey=>$aFailArr)
$iKey = $iFailKey;
for($i=$iKey; $i<count($aUrl2Dir); $i++) {
$aFailPosition = array();
$aFailPosition[$i]['url'] = $aUrl2Dir[$i]['url'];
$aFailPosition[$i]['dir'] = $aUrl2Dir[$i]['dir'];
$sFailPosition = serialize($aFailPosition);
file_put_contents("$sFailFileName", $sFailPosition);
$sURL = $aUrl2Dir[$i]['url'];
$sDIR = $aUrl2Dir[$i]['dir'];
$sContent = file_get_contents($sURL);
file_put_contents($sDIR, $sContent);
if($iKey == count($aUrl2Dir)-1) {
echo ($iKey+1) . "products documents created!";
exit(0);
}
}
}
}
?>
[课程]Android-CTF解题方法汇总!