PHP网页设计缓存手艺详谈―php
不可能吃饭的时候咬了自己一下舌头就从此不吃饭了不是?放下畏惧,继续努力,咱们是来征服它的,而不是被它征服的,振奋起来吧同志。缓存 1、引论PHP,一门比来几年衰亡的web设计剧本言语,因为它的壮大和可伸缩性,近几年来失掉长足的开展,php比拟传统的asp网站,在速度上有相对的优势,想mssql转6万条数据php如需求40秒,asp不下2分钟.然而,因为网站的数据愈来愈多,咱们渴求能更疾速的挪用数据,不用要每次都从数据库失落,咱们可以从其他的中央,例如一个文件,或某个内存地址,这就是php的缓存手艺,也就是Cache手艺.
2、剖析深切
普通来讲,缓存的目标是把数据放在一个中央让会见的更快点,毫无疑问,内存是最快的,然而,几百M的数据能往内寄存么?这不实际,固然,有的时分一时放如办事器缓存,如ob_start()这个缓存页面开启的话在发送文件头之前页面内容都被缓存在内存中,晓得等页面输入主动清晰或守候ob_get_contents的前往,或被ob_end_clean显示的排除,这在静态页面的生成中能很好的使用,在模板中能失掉很好的表现,我的这篇文章深切的会商了:谈PHP生成静态页面,这是一种体例,但这是一时性的,不是处理咱们成绩的好办法.
别的,在asp中有一对象application,可以保留公用的参数,这也算点缓存,但在php,我至今没看到开辟者产出这类对象,切实其实,没需要.asp.net的页面缓存手艺就用的是viewstate,而cache就是文件联系关系,(纷歧定正确),文件被修正,更新缓存,文件没被修正并且不超时(正文1),就读取缓存,前往了局,就是这个思绪,看看这个源码:
<?php
class cache{
/*
Class Name: cache
Description: control to cache data,$cache_out_time is a array to save cache date time out.
Version: 1.0
Author: 老农 cjjer
Last modify:2006-2-26
Author URL: http://www.cjjer.com
*/
private $cache_dir;
private $expireTime=180;//缓存的工夫是 60 秒
function __construct($cache_dirname){
if(!@is_dir($cache_dirname)){
if(!@mkdir($cache_dirname,0777)){
$this->warn('缓存文件不存在并且不克不及创立,需求手动创立.');
return false;
}
}
$this->cache_dir = $cache_dirname;
}
function __destruct(){
echo 'Cache class bye.';
}
function get_url() {
if (!isset($_SERVER['REQUEST_URI'])) {
$url = $_SERVER['REQUEST_URI'];
}else{
$url = $_SERVER['SCRIPT_NAME'];
$url .= (!empty($_SERVER['QUERY_STRING'])) ? '?' . $_SERVER['QUERY_STRING'] : '';
}
return $url;
}
function warn($errorstring){
echo "<b><font color='red'>产生毛病:<pre>".$errorstring."</pre></font></b>";
}
function cache_page($pageurl,$pagedata){
if(!$fso=fopen($pageurl,'w')){
$this->warns('没法翻开缓存文件.');//trigger_error
return false;
}
if(!flock($fso,LOCK_EX)){//LOCK_NB,排它型锁定
$this->warns('没法锁定缓存文件.');//trigger_error
return false;
}
if(!fwrite($fso,$pagedata)){//写入字撙节,serialize写入其他格局
$this->warns('没法写入缓存文件.');//trigger_error
return false;
}
flock($fso,LOCK_UN);//释放锁定
fclose($fso);
return true;
}
function display_cache($cacheFile){
if(!file_exists($cacheFile)){
$this->warn('没法读取缓存文件.');//trigger_error
return false;
}
echo '读取缓存文件:'.$cacheFile;
//return unserialize(file_get_contents($cacheFile));
$fso = fopen($cacheFile, 'r');
$data = fread($fso, filesize($cacheFile));
fclose($fso);
return $data;
}
function readData($cacheFile='default_cache.txt'){
$cacheFile = $this->cache_dir."/".$cacheFile;
if(file_exists($cacheFile)&&filemtime($cacheFile)>(time()-$this->expireTime)){
$data=$this->display_cache($cacheFile);
}else{
$data="from here wo can get it from mysql database,update time is <b>".date('l dS \of F Y h:i:s A')."</b>,过时工夫是:".date('l dS \of F Y h:i:s A',time()+$this->expireTime)."----------";
$this->cache_page($cacheFile,$data);
}
return $data;
}
}
?>
上面我打断这个代码逐行注释.
下一页
学习数据库了,MYSQL可算是PHP的黄金搭档了,不过,虽然话是这么说,你也可能恨不得把MYSQL给生吞活剥了,因为这一行一列的东东简直让自己头晕目眩。 我还是推荐用firefox ,配上firebug 插件调试js能省下不受时间。谷歌的浏览器最好也不少用,因为谷歌的大侠们实在是太天才啦,把一些原来的js代码加了一些特效。 我要在声明一下:我是个菜鸟!!我对php这门优秀的语言也是知之甚少。但是我要在这里说一下php在网站开发中最常用的几个功能: 装在C盘下面可以利用windows的ghost功能可以还原回来(顺便当做是重转啦),当然啦我的编译目录要放在别的盘下,不然自己的劳动成果就悲剧啦。 当然这种网站的会员费就几十块钱。 我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。 不禁又想起那些说php是草根语言的人,为什么认得差距这么大呢。 最后祝愿,php会给你带来快乐的同时 你也会给他带来快乐。 基础有没有对学习php没有太大区别,关键是兴趣。 至于模板嘛,各位高人一直以来就是争论不休,我一只小菜鸟就不加入战团啦,咱们新手还是多学点东西的好。 个人呢觉得,配wamp 最容易漏的一步就是忘了把$PHP$目录下的libmysql.dll拷贝到windows系统目录的system32目录下,还有重启apache。 开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。 其实也不算什么什么心得,在各位大侠算是小巫见大巫了吧,望大家不要见笑,若其中有错误的地方请各位大虾斧正。 开发工具也会慢慢的更专业,每个公司的可能不一样,但是zend studio是个大伙都会用的。 遇到出错的时候,我经常把错误信息直接复制到 google的搜索栏,一般情况都是能搜到结果的,不过有时候会搜出来一大片英文的出来,这时候就得过滤一下,吧中文的弄出来,挨着式方法。 对于初学者来说不推荐去拿钱买的。当然如果一个网站你经常去用,而且里面的资料也比较有用,最好还是买个会员比较好,毕竟那些也是别人的工作成果。 兴趣是最好的老师,百度是最好的词典。 本人接触php时间不长,算是phper中的小菜鸟一只吧。由于刚开始学的时候没有名师指,碰过不少疙瘩,呗很多小问题卡过很久,白白浪费不少宝贵的时间,在次分享一些子的学习的心得。 我还是强烈建议自己搭建php环境。因为在搭建的过程中你会遇到一些问题,通过搜索或是看php手册解决问题后,你会更加深刻的理解它们的工作原理,了解到php配置文件中的一些选项设置。 要进行开发,搭建环境是首先需要做的事,windows下面我习惯把环境那个安装在C盘下面,因为我配的环境经常出现诡异事件,什么事都没做环境有的时候就不能用啦。
页:
[1]
2