喜悦国际村 
» 游客:  注册 | 登录 | 统计 | 喜悦证交所 | 帮助

RSS 订阅当前论坛  

【北京】--【低薪】-【诚聘】--- 高级PHP工程师,WEB前台开发工程师

上一主题 下一主题
 11  1/2  1  2  > 
     
标题: [原创] 静态页面生成之方案  
 
gaoshikao
新手上路
Rank: 1



UID 82076
精华 0
积分 25
帖子 20
金钱 25 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-10-24
状态 离线
静态页面生成之方案

随着网络的发展,SEO逐渐得到了我们的重视,把网站做成静态网站是势在必行了.生成静态页面的方法不外乎几种,看了很多资料,都是介绍通过OB函数控制输出的,我在这里给大家介绍我的方法: 通过file_get_contents()方法.这个方法可以获取网页的内容,包括本地的和internet上的,所以我们可以通过$content = file_get_contents("http://localhost/index.php");获取本地的或者防在服务器上的文件输出结果,然后创建指定的目录和文件,最后把内容写进去,从而实现了静态页面的输出.在这里,我发两个函数,一个是写函数,一个是读函数.完全兼容php4和php5.
function dfile_put_contents($file, &$data, $flags=0){
        // Check to see if functin exists
        if (function_exists('file_put_contents')) {
                file_put_contents($file, $data);
        }else{

                // Define constants used by function, if not defined
                if (!defined('FILE_USE_INCLUDE_PATH')) define('FILE_USE_INCLUDE_PATH', 1);
                if (!defined('FILE_APPEND'))           define('FILE_APPEND', 8);
                 
                // Varify arguments are correct types
                if (!is_string($file)) return(false);
                if (!is_string($data) && !is_array($data)) return(false);
                if (!is_int($flags)) return(false);
                 
                // Set the include path and mode for fopen
                $include = false;
                $mode    = 'wb';
                 
                // If data in array type..
                if (is_array($data)) {
                        // Make sure it's not multi-dimensional
                        reset($data);
                        while (list(, $value) = each($data)) {
                                if (is_array($value)) return(false);
                        }
                        unset($value);
                        reset($data);
                        // Join the contents
                        $data = implode('', $data);
                }
                 
                // Check for flags..
                // If include path flag givin, set include path
                if ($flags&FILE_USE_INCLUDE_PATH) $include = true;
                // If append flag givin, set append mode
                if ($flags&FILE_APPEND) $mode = 'ab';
               
                // Open the file with givin options
                if (!$handle = @fopen($file, $mode, $include)) return(false);
                // Write data to file
                if (($bytes = fwrite($handle, $data)) === false) return(false);
                // Close file
                fclose($handle);
                 
                // Return number of bytes written
                return($bytes);
        }
}

function dfile_get_contents($file, $include=false){
        // Check to see if functin exists
        if (function_exists('file_get_contents')) {
                return @file_get_contents($file);
        }else{
                // Varify arguments are correct types
                if (!is_string($file))  return(false);
                if (!is_bool($include)) return(false);
                 
                // Open the file with givin options
                if (!$handle = @fopen($file, 'rb', $include)) return(false);
                // Read data from file
                $contents = fread($handle, filesize($file));
                // Close file
                fclose($handle);
                 
                // Return contents of file
                return($contents);
        }
}
2008-3-13 02:22 PM#1
查看资料  发短消息  顶部
 
dyfire
新手上路
Rank: 1



UID 83575
精华 0
积分 23
帖子 27
金钱 23 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2006-11-21
状态 离线
[推荐阅读] MYSQL 远程和本地的问题
路过看看~~



我的blog:www.52niuniu.net
2008-3-17 03:12 PM#2
查看资料  发短消息  顶部
 
darkcc123 (darkcc123)
乞丐

初级会员



UID 67166
精华 0
积分 -1
帖子 59
金钱 -1 喜悦币
威望 0
人脉 0
阅读权限 1
注册 2005-12-14
状态 离线
[推荐阅读] 创业失败重回本行
用ob函数会不会更简单一点呢?
2008-3-30 10:59 PM#3
查看资料  发短消息  顶部
 
xieaotian
版主
Rank: 7Rank: 7Rank: 7
老老仙


UID 82205
精华 0
积分 865
帖子 1023
金钱 875 喜悦币
威望 -10
人脉 0
阅读权限 100
注册 2006-10-26
来自 老老神仙部落
状态 离线
[推荐阅读] 广东汕头电信100M独享、浙江台州温州电信百M独享QQ445676667
力荐OB.



http://www.okpython.com
让中国的python发展的更快。
2008-3-31 08:27 AM#4
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
ydl0025
新手上路
Rank: 1


UID 105120
精华 0
积分 15
帖子 47
金钱 15 喜悦币
威望 0
人脉 0
阅读权限 10
注册 2007-12-29
来自 北京
状态 离线
[推荐阅读] 急聘PHP编程人员
用了,还可以



没有什么事是做不到的,关键是你有没有去做
2008-4-16 12:08 PM#5
查看资料  访问主页  发短消息  QQ  顶部
 
xieaotian
版主
Rank: 7Rank: 7Rank: 7
老老仙


UID 82205
精华 0
积分 865
帖子 1023
金钱 875 喜悦币
威望 -10
人脉 0
阅读权限 100
注册 2006-10-26
来自 老老神仙部落
状态 离线
[推荐阅读] 全职PHP和Windows/Linux/FreeBSD VC/C++软件开发工程师(北京海淀上地商圈)
也许OB更快些,你这个只是单纯生成了一个文件.



http://www.okpython.com
让中国的python发展的更快。
2008-4-17 09:41 AM#6
查看资料  访问主页  Blog  发短消息  QQ  顶部
 
阿刁
中级会员
Rank: 3Rank: 3
一般会员


UID 31510
精华 0
积分 299
帖子 276
金钱 299 喜悦币
威望 0
人脉 0
阅读权限 30
注册 2004-9-27
状态 离线
[推荐阅读] C/C++ 程序设计员应聘常见面试试题深入剖析
似乎没什么技术可研.



印巴文化
2008-4-17 01:27 PM#7
查看资料  Blog  发短消息  QQ  顶部
 
gouki
注册会员
Rank: 2
一般会员



UID 15556
精华 0
积分 108
帖子 93
金钱 108 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2002-7-29
状态 离线
[推荐阅读] 如果我被金山公司录取该咋办?
其中的技术就是把file_get_contents和file_put_contents重写了一遍。
自从到了2008年。应该是全世界都用上了PHP5了吧。
所以……这两个写不写都没有什么区别了




http://www.cnitblog.com/neatstudio/
http://www.neatcn.com
飞天小肥猪的简单人生
2008-4-22 12:03 AM#8
查看资料  Blog  发短消息  QQ  顶部
 
wamper (wamper)
金牌会员
Rank: 6Rank: 6
资深会员


UID 23187
精华 0
积分 1014
帖子 1146
金钱 1014 喜悦币
威望 0
人脉 0
阅读权限 70
注册 2003-9-14
来自 北京
状态 离线
[推荐阅读] 怎么读取http://web.archive.org/web/*/http://www.baidu.com这样网页的内容
链接地址修改了吗? 如果链接地址还是php的, 那这样静态化只是会提高点访问速度,对seo没什么影响
2008-4-22 08:39 AM#9
查看资料  发短消息  ICQ 状态  顶部
 
pingasi (pingasi)
注册会员
Rank: 2
一般会员



UID 27741
精华 0
积分 104
帖子 100
金钱 104 喜悦币
威望 0
人脉 0
阅读权限 20
注册 2004-4-12
状态 离线
[推荐阅读] 这个问题很头疼
楼主再继再励!!!

写个类似write的规则,然后file_put_contents时替换url,
遍历全站php生成静态,太妙了
2008-4-27 02:26 AM#10
查看资料  访问主页  发短消息  顶部
 11  1/2  1  2  > 
     


  可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题 | 开通个人空间  


 


Powered by Discuz! 6.1.0  © 2001-2010 Comsenz Inc.
Processed in 0.023102 second(s), 6 queries

(冀ICP备05009913号) 管理员:sadly 邮箱/MSN: sadly@phpx.com QQ:824008(长隐) 清除 Cookies - - Archiver - WAP