本文目录一览:
PHP应用中常用的9大缓存技术?
一、全页面静态化缓存
也就是将页面全部生成html静态页面,用户访问时直接访问的静态页面,而不会去走php服务器解析的流程。此种方式,在CMS系统中比较常见,比如dedecms;
一种比较常用的实现方式是用输出缓存:
Ob_start()******要运行的代码*******$content=Ob_get_contents();****将缓存内容写入html文件*****Ob_end_clean();
二、数据缓存
顾名思义,就是缓存数据的一种方式;比如,商城中的某个商品信息,当用商品id去请求时,就会得出包括店铺信息、商品信息等数据,此时就可以将这些数据缓存到一个php文件中,文件名包含商品id来建一个唯一标示;下一次有人想查看这个商品时,首先就直接调这个文件里面的信息,而不用再去数据库查询;其实缓存文件中缓存的就是一个php数组之类;
Ecmall商城系统里面就用了这种方式;
三、查询缓存
其实这跟数据缓存是一个思路,就是根据查询语句来缓存;将查询得到的数据缓存在一个文件中,下次遇到相同的查询时,就直接先从这个文件里面调数据,不会再去查数据库;但此处的缓存文件名可能就需要以查询语句为基点来建立唯一标示;
按时间变更进行缓存
就是对于缓存文件您需要设一个有效时间,在这个有效时间内,相同的访问才会先取缓存文件的内容,但是超过设定的缓存时间,就需要重新从数据库中获取数据,并生产最新的缓存文件;比如,我将我们商城的首页就是设置2个小时更新一次。
四、页面部分缓存
该种方式,是将一个页面中不经常变的部分进行静态缓存,而经常变化的块不缓存,最后组装在一起显示;可以使用类似于ob_get_contents的方式实现,也可以利用类似ESI之类的页面片段缓存策略,使其用来做动态页面中相对静态的片段部分的缓存。
该种方式可以用于如商城中的商品页;
五、Opcode缓存
首先php代码被解析为Tokens,然后再编译为Opcode码,最后执行Opcode码,返回结果;所以,对于相同的php文件,第一次运行时可以缓存其Opcode码,下次再执行这个页面时,直接会去找到缓存下的opcode码,直接执行最后一步,而不再需要中间的步骤了。
比较知名的是XCache、TurckMMCache、PHPAccelerator等。
六、按内容变更进行缓存
这个也并非独立的缓存技术,需结合着用;就是当数据库内容被修改时,即刻更新缓存文件;
比如,一个人流量很大的商城,商品很多,商品表必然比较大,这表的压力也比较重;我们就可以对商品显示页进行页面缓存;
当商家在后台修改这个商品的信息时,点击保存,我们同时就更新缓存文件;那么,买家访问这个商品信息时,实际问的是一个静态页面,而不需要再去访问数据库;
试想,如果对商品页不缓存,那么每次访问一个商品就要去数据库查一次,如果有10万人在线浏览商品,那服务器压力就大了;
七、内存式缓存
提到这个,可能大家想到的首先就是Memcached;memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。
它就是将需要缓存的信息,缓存到系统内存中,需要获取信息时,直接到内存中取;比较常用的方式就是key_value方式;
connect($memcachehost,$memcacheport)ordie("Couldnotconnect");$memcache-set('key','缓存的内容');$get=$memcache-get($key);//获取信息?
八、apache缓存模块
apache安装完以后,是不允许被cache的。云南IT培训认为如果外接了cache或squid服务器要求进行web加速的话,就需要在htttpd.conf里进行设置,当然前提是在安装apache的时候要激活mod_cache的模块。
3.PHP核心技术
Cookie 和 session 是两种不同的存储机制。cookie 是从一个外部页面到下一个页面的数据传递的方法,它一般是存储在客户端的。Session 是让数据在页面当中具有持续有效的一个方法。他一般是存储在服务器端。
Cookie 是一种在客户浏览器端存储数据,并且以此来去跟踪和识别用户的一种机制。简单的说呢,cookie 是 Web 服务器暂时存储在用户的硬盘上的一个文本文件。
web 服务器可以通过 Cookie 包含的信息来筛选或维护这些信息。用来判断 HTTP 传输的状态。
在 PHP 中通过 setcookie()函数创建 Cookie,在创建 Cookie 之前,要了解 Cookie 是 HTTP 头标的组成部分。
通过超全局变量数组$_COOKIE[ ]来读取浏览器端的 Cookie 值
是自动删除Cookie数据,如果设置了失效时间,浏览器会记住Cookie数据,即使重启计算机,只要时间不到,都依然有效。
1.使用 setcookie()函数删除 Cookie
2.在浏览器中手动删除
如果 Cookie 不设定失效时间,就表示它的生命周期,就为浏览器会话的期间的这个时间。只要关闭浏览器,Cookie 就会自动消失。这种 cookie 被称之为叫会话 cookie。一般情况下,啊,不存在硬盘上的,而是保存在这个内存里边。
如果设置失效时间,浏览器会把 cookie 保存到硬盘上,再次打开浏览器的时候,依然会有效,只要时间未过期,就一直有效。直到到达有效时间。
虽然,cookie 可以长期保存在客户端的浏览器当中。但是浏览器最多允许存储 300 个 cookie 文件。而且每一个 Cookie 文件支持最大容量只有 4kb。每一个域名最多只支持 20 个 cookie。如果达到限制,浏览器会自动随机的删除 cookie 文件。
Session 在翻译的时候呢也翻译为“会话”。他原本的意思就是指,有始有终的一系列的动作或者消息。比如你打电话的时候从拿起电话拨电话号码一直到挂断电话这一系列的过程就可以称之为一个 Session。
启动一个 session 会话时,会生成一个随机且唯一的 session_id。也就是 session 的文件名。session_id 存储在服务器的内存中。当你关闭页面的时候,这个 id 会自动注销。重新再登录这个页面的时候呢,会再次生成一个随机且唯一的 id。
创建一个会话需要的步骤
启动会话-注册会话-使用会话-删除会话
1.启动会话 注册会话
启动 PHP 会话的方式有两种方式:1、使用 session_start()函数,2.使用 session_register()函数为会话创建一个变量来隐含的启动会话
3.删除会话
1.删除单个
2.删除多个
3.结束当前会话
1.session_set_cookie_params() 设置 session 的失效时间,这个函数是 Session 结合 Cookie 设置失效时间。
此函数在一些浏览器上会出现问题。所以一般建议手动设置。
2.使用 setcookie() 可以设置 Session 的失效时间,
使用 GD2 函数库可以实现对各种图形图像的处理,先使用 GD2 函数库来创建画布。通过 imagecreate()实现.
使用 imageTTFText()函数将文字以 TTF 字体输出在图像中。 1.使用 header()函数定义输出的图像类型。
2.imagecreatefromjpeg()函数载入图片。
3.imagecolorallocate()函数设置输出字体颜色。 4.定义输出的中文字符串所使用的字体。 5.通过 iconv()函数对输出的中文字符串的编码格式进行转换。 6.使用 imageTTFText()函数向图片中添加文字。 7.创建图像,释放资源。
文件处理包括读取、关闭、重写等。
打开/关闭文件使用 fopen()函数和 fclose()函数。(千万小心,别误删了文件)
1.打开文件/关闭文件
1.从文件中读取数据
2.文件写入
php 除了可以对文件进行读写之外,对文件本身同样也可以进行操作。比如说复制重命名,查看修改日期,等等都可以。
1.打开目录
使用 opendir()函数打开目录
2.关闭目录
使用 closedir()函数关闭目录
1.使用 scandir()函数
2.readdir() 函数
chmod($pathname,权限);
权限分别使用3个值:
要想去顺利地实现这个上传功能,我们要在php.ini这个文件里面去修改它的配置.
$_FILES变量它存储的是上传文件的相关信息。对于我们去完成上传文件的这个功能提供一些参数信息。
先在a.html 页面完成表单元素的创建,使用input type="file"元素提供上传文件的入口。
move_uploaded_file(string filename,string destinationnpath)函数上传文件存储到指定的位置。
创建upload.php 文件用来处理客户端上传过来的文件的信息,包括文件的存储。
php的优点总结 php有哪些优点
PHP优点:
1.入门快,有其它语言基础的程序员二周左右的时间就可以入门,一个月左右的时间基本上就可以开发简单的项目了。
2.开发成本低,PHP最经典的组合就是:Linux + Apache + MySQL + PHP。非常适合开发中小型的web应用,因为上手容易,所以开发的速度比较快。而且所有的软件都是开源免费的,可以减少投入。
3.PHP是解释性的脚本语言,写完代码以后即可以执行,不像c,java,c++等语言还需要去编译执行,相对来说比较节省时间。
4.相对来说,PHP程序员的薪水的平均工资要比c,c++,java程序员的平均工资要低一些,特别是对于中小型企业来说可以节约一些成本。
5.配置及部署相对简单一些,对比JAVA开发来说,JAVA开发的配置就复杂多了,什么Structs、Spring、Hibernate、Tomcat等等很多地方都需要配置,甚至你在程序中每写一个SQL语句都需要先在Hibernate中配置一下,有时重新部署一个class文件或jar文件还可能需要重启Web服务器(Tomcat或Resin或其它的Web服务器)使新部署的库文件生效。
PHP开发中主要是PHP自身的配置文件及Web服务器的配置(如Apache或Nginx或Lighttpd等),相对于JAVA来说还是简单一些,而且新修改了文件以后不需要重新启动Web即可以立即生效。
6.有很多开源的框架或开源的系统可以使用,比如比较知名的开源框架有Zend Framework、CakePHP、CodeIgniter、symfony、thinkphp等,开源论坛有Discuz!、Phpwind等,开源博客WordPress,开源网店系统如Ecshop、ShopEx等,开源的SNS系统如UCHome、ThinkSNS等。
内容扩展
1. 跨平台,性能优越,跟Linux/Unix结合别跟Windows结合性能强45%,并且和很多免费的平台结合非常省钱,比如LAMP(Linux /Apache/Mysql/PHP)或者FAMP(FreeBSD/Apache/Mysql/PHP)结合,或者数据应用够大可以考虑换 PostgreSQL或者Oracle,支持N种数据库。(N = 10)
2. 语法简单,如果有学习C和Perl的很容易上手,并且跟ASP有部分类似。有成熟的开发工具,比如NuPHPed,或者Zend Studio等等,再Linux平台下可以使用Eclipse等等。
3. 目前主流技术都支持,比如WebService、Ajax、XML等等,足够应用。
4. 有比较完整的支持,比如使用ADODB或者PEAR::DB做数据库抽象层,用Smarty或者smart template做模板层,如果是PHP 5.1的话,还能够使用PDO(PHP Data Object)来访问数据库。
5. 有很多成熟的框架,比如支持MVC的框架:phpMVC,支持类似ASP.net的事件驱动的框架:Prado,支持类似Ruby On Rails的快速开发的框架:Cake等等,足够满足你的应用需求。
6. PHP 5已经有成熟的面向对象体系,能够适应基本的面向对象要求。适合开发大型项目。
7. 有成熟的社区来支持PHP的开发。
8. 目前已经很多大型应用都是使用PHP,比如淘宝网、Yahoo、163、Sina等等大型门户,很多选用PHP来作为他们的开发语言,所以大型门户都能够选用它,我想足够能够你的使用了。
9. 有很多开源的框架或开源的系统可以使用,比如比较知名的开源框架有Zend Framework、CakePHP、CodeIgniter、symfony等,开源论坛有Discuz!、Phpwind等,开源博客 WordPress,开源网店系统如Ecshop、ShopEx等,开源的SNS系统如UCHome、ThinkSNS等。