静态缓存规则是静态缓存生成中最关键的配置。静态缓存规则与URL路由规则有些类似,这两者的核心都是基于正则匹配的。其中index即为控制器动作,表示在URL请求到index动作时,系统将生成index.html静态缓存文件。文件缓存规则共由缓存规则、缓存有效期及附加规则构成。同样,在缓存规则中也是允许这样使用的。......
2023-11-04
在ThinkPHP中,缓存数据集是最常用及最有意义的一项操作,因为系统内置了非常智能化编译及缓存机制,数据表字段、SQL语句等在非调试模式下会自动进行缓存,所以开发人员不需要手动处理。缓存数据集能够避免相同数据多次读取数据库,从而提高查询效率。
通常情况下,数据集是由多条记录组成的,所以只需要将一条记录作为一条Memcached数据项,就可以有效改善查询速度;如果数据量比较小,可以一次性将整个数据集进行缓存。缓存数据集,可分为3种模式,下面分别介绍。
1.缓存数据集字段
缓存数据集字段是效率最高、也是Memcached最常使用的一种缓存模式。缓存数据集,只需要在第一次返回结果时,将其中没有创建索引,或者数据量比较大的字段(例如text、varchar字段等)缓存到Memcached中,用户再次查询相同的数据时,系统将直接输出已经缓存过的字段值,避免再次查询数据库。如以下代码所示。
上述代码中,将title及content字段值使用Memcached缓存为一个独立项,再次查询title及content字段时,系统将不会从tpk_article数据表获取,而是直接在缓存系统中获取,很好地提高了效率。
不仅如此,由于缓存系统是全局性的,这也就意味着缓存系统中的数据可以在网站内任何地方调用。根据这个原理,在单击文章详情时,只需要输出Memcachd中的缓存即可,而不需要查询数据表。如以下代码所示。
如上述代码所示,在文章详细页面中,根据GET传递参数判断缓存系统是否存在相应的数据,如果存在,则直接返回数据,不再操作数据库。经过上述处理,数据查询速度将得到质的提升。
2.缓存数组集结果
如果数据集返回的数据量比较小,可以将全部结果缓存到Memcached中,这样做的好处是可以提高开发效率,同时也能够提高查询速度。但也有缺点,如果返回的数据量突然增多,甚至超过Memcache的容量,那么数据集将会丢失数据,造成系统运行异常。
同时需要注意,缓存整个数据集必须要将结果进行序列化(要确保获取时能够完美反序列化),常用的序列化函数有json_encode、sizeo、base64_encode等。缓存数据集相对比较简单,只需要创建缓存Key即可,如以下代码所示。
上述代码使用到了分页扩展,这里只需要理解即可,后面将会有详细介绍。一个数据集就相当于一个页面中的数据循环体,根据分页号唯一性的特点,可以直接使用分页号作为Memcached缓存主键,在获取数据时,一条Memcached数据项就是一个数据集。(www.chuimin.cn)
3.缓存整个数据表
缓存整个数据表是减轻数据库查询压力最有效的方法,但同时也是最消耗内存的一种缓存方式。同时,由于在缓存时需要全部读取数据表中的数据,然后执行缓存操作。在这一过程中,将会占用服务器的大量资源(主要是内存及CPU)。
将数据全部缓存到Memcached之后,程序在获取数据时并不直接连接数据库,而是连接缓存服务器。在查询时,只能根据缓存主键(例如ID)查询数据,并且只支持一个字段。这样一来数据库操作将失去原有的灵活性,所以在此并不建议使用这种模式缓存数据。但如果确实需要,建议使用以下几种手段解决上述提到的问题。
➢创建缓存时,需要在访问量较少的时间段内进行,可以配合计划任务实现。但更通用的办法是在网站后台中,由管理员手动生成缓存。
➢由于Memcached是一个内存数据库,所以Memcached所在的服务器内存必须要足够大。服务器关机后,内存中的数据也将会被清空,所以尽量搭建可容灾的Memcached服务器集群。
➢充分使用Memcached内置的zlib压缩功能。
下面通过一段简单的示例代码,演示缓存数据表数据的过程,代码并不完善,在真实应用开发中还需要读者继续完善,代码如下所示。
生成缓存后,只需要根据cache_id进行获取即可,如以下代码所示。
上述代码使用for区间批量获取,读者可以根据前面介绍的第2种缓存模式获取单条缓存数据。
有关PHP MVC开发实战的文章
静态缓存规则是静态缓存生成中最关键的配置。静态缓存规则与URL路由规则有些类似,这两者的核心都是基于正则匹配的。其中index即为控制器动作,表示在URL请求到index动作时,系统将生成index.html静态缓存文件。文件缓存规则共由缓存规则、缓存有效期及附加规则构成。同样,在缓存规则中也是允许这样使用的。......
2023-11-04
ThinkPHP提供了HTML_CACHE_ON配置参数,用于设置是否开启静态缓存功能。所谓的静态缓存就是文件缓存,HTML_CACHE_RULES关联数组可以灵活地配置静态缓存的各种规则。上述代码中,演示了4种静态缓存模式。缓存有效期和附加规则都是可选参数,这里重点需要理解静态缓存规则。默认情况下静态缓存文件存放在home/Html目录下,通过配置参数HTML_PATH修改静态缓存文件存放目录。需要注意的是,开启静态缓存不仅需要正确配置HTML_CACHE_RULES选项,还必须开启HTML_CACHE_ON选项,两者缺一不可。......
2023-11-04
图12-2 SOAP服务如果服务没有开启,需要在PHP配置文件中开启,如以下代码所示。其中参数1表示SOA服务描述文件,即WSDL文件,该文件是SOAP通信的核心;参数2表示SOAP协议版本,常用的版本有1.0及1.2,本章内容及示例全部基于SOAP 1.2版本实现。使用普通的Firebug等插件不能获取到异常信息,而断点调试是PHP的弱项,所以调试问题将会是SOAP开发首要面对的问题。......
2023-11-04
图6-4 网站布局ThinkPHP 3.0之前的模板引擎没有布局的概念,但开发人员可以使用include包含文件达到网站布局的效果。布局文件允许嵌套,如果网站页面更加复杂,还可以结合include等标签实现开发需求。另外,如果不需要全局布局,也可以单独在当前页面中使用布局文件,只需要在当前页面头部加上
2023-11-04
PHP 5后的版本借鉴了大量Java思想,得益于早期PHP面向过程编程支持,PHP在实现MVC设计中变得较灵活、易用。但是随着PHP 5.x的到来,各种MVC框架的出现,尤其Zend推出的Zend Framework,彻底地改变了PHP状况,使得PHP也能够实现优雅的Web编程。MVC设计模式将使代码将变得简洁。但是在MVC设计模式中,Index称为动作。当然,MVC只是一种设计模式,在开源的PHP编程世界中,已经拥有众多的MVC编程框架。......
2023-11-04
前面已经简单介绍过ThinkPHP视图引擎,这些标签处理机制类似于JSP tag,使用XML作为标签的渲染方式,开发人员可以方便地在网页中嵌入XML标签,然后由ThinkPHP视图引擎解释成标准的PHP代码。ThinkPHP的视图引擎之所以高效,主要体现在它的标签扩展性。ThinkPHP的视图标签扩展性够完美地与后台控制器代码相结合,例如在Smarty中使用函数功能,首先需要在后台PHP代码注册,而在ThinkPHP中完全不需要,如以下代码所示。......
2023-11-04
系统共支持7种模式扩展,下面将分别对最常用的几种模式进行介绍。表11-1 CURD操作接口如表11-1所示,参数$data表示传入或返回的数据信息;参数$options表示返回当前操作的模型名称及表前缀。......
2023-11-04
Eclipse是IBM的一个商业项目,2001年11月起IBM将Eclipse贡献给开源社区,从此奠定了Eclipse的地位。Eclipse通过PDT插件来提供PHP开发支持,Eclipse PDT能够让编写PHP变得简单和高效,下面将介绍Eclipse PDT的安装和使用。Eclipse PDT的安装有两种方式,一种是直接通过Eclipse的扩展进行安装;另一种是下载带PDT插件的Eclipse。下面将以Eclipse3.5.2作为基础,讲解Eclipse PDT插件的安装过程。如果下载带PDT插件的Eclipse,只需要双击Eclipse启动程序即可,此时Eclipse就提供了完美的PHP编程支持。......
2023-11-04
相关推荐