


The principles, characteristics and usage of caching technology in php
本篇文章主要介绍php中缓存技术的原理、特点及用法,感兴趣的朋友参考下,希望对大家有所帮助。
JBLOG在开发的过程中,对性能的优化做了不少工作。为了尽量减少不必要的数据库查询,我对一些数据进行了缓存和静态化处理。
缓存的原理:把一些经常要用到但又很少改动的数据以数组或其它形式存储到一个独立的PHP文件中,然后在需要用到的时候包含进来。
缓存的优点:能够大大减少数据库的查询次数,减轻数据库的压力,提高程序的执行效率。
JBLOG缓存的数据有:系统设置、博客分类、侧栏最新日志、最新评论、博客统计、日志归档、友情链接、标签等。通过缓存这些数据,执行一次页面数据库的查询次数从十几次减少到3次。
JBLOG中与缓存相关的函数保存在include目录下的cache.func.php里,主要函数:
//刷新缓存 function recache($cachestr = '') { if (!$cachestr) { $cachelist = array('config','class','archive','newcomment','newpost','link','tag','statistic','topblog'); } else { $cachelist = explode(',',$cachestr); foreach ($cachelist as $cache) { $cachename = $cache.'_recache'; if (function_exists($cachename)) { $cachename(); } } } }
recache()函数用来刷新缓存,每一个缓存以独立的函数存在,刷新缓存时仅需执行一次相应的函数即可。
//将字符串写进文件 function writeToFile($cachename,$content = '') { $allowcache = $cachelist = array('config','class','archive','newcomment','newpost','link','tag','statistic','topblog'); if (in_array($cachename,$allowcache)) { $cache_dir = JBLOG_ROOT.'cache_data/'; $cache_file_name = $cache_dir.'cache_'.$cachename.'.php'; if (!is_dir($cache_dir)) { @mkdir($cache_dir,0777); } if ($fp = @fopen($cache_file_name,'wb')) { $content = "<?php\r\n//该文件是系统自动生成的缓存文件,请勿修改\r\n//创建时间:".date('Y-m-d H:i:s',time())."\r\n\r\nif (!defined('IN_JBLOG')) {exit('Access Denied!');}\r\n\r\n".$content."\r\n\r\n?>"; @fwrite($fp,$content); @fclose(); @chmod($cache_file_name,0777); } else { echo '缓存文件<b>'.$cache_dir.$cache_file_name.'</b>创建失败!<br />'; } } else { die('缓存名称<b>'.$cachename.'</b>不在系统允许的范围内!'); } }
writeToFile() 函数用于将数据写入到缓存目录下以cache_缓存名称.php命名的文件中。
再看具体的缓存函数实例:
//缓存博客分类 function class_recache() { global $db,$tablepre; $content = ''; $sql = "SELECT id,classname,description,orderid,arcnum FROM `{$tablepre}class` ORDER BY orderid"; $result = $db->query($sql); while ($row = $db->fetch_array($result)) { $content .= "\tarray(\r\n"; $content .= "\t'id'=>'".addslashes($row['id'])."',\r\n"; $content .= "\t'classname'=>'".addslashes($row['classname'])."',\r\n"; $content .= "\t'description'=>'".addslashes($row['description'])."',\r\n"; $content .= "\t'orderid'=>'".addslashes($row['orderid'])."',\r\n"; $content .= "\t'arcnum'=>'".addslashes($row['arcnum'])."',\r\n"; $content .= "\t),\r\n"; } $content = substr($content,0,strrpos($content,',')); $content = "\$class_cache = array(\r\n{$content}\r\n);"; writeToFile('class',$content); }
class_recache()函数从数据库取出数据,然后构造一个数组,以分类ID作为数组的索引,类别的信息作为对应的值,方便数据的访问。
缓存的引入:
所有缓存数据统一在include目录下的common.inc.php引入,代码如下:
//加载系统设置信息,文件不存在则重建缓存 if ([email=!@include(JBLOG_ROOT.]!@include(JBLOG_ROOT.'cache_data/cache_config.php'[/email])) { require_once(JBLOG_ROOT.'include/cache.func.php'); recache('config'); exit('成功创建系统配置信息缓存,请刷新页面!'); } //加载缓存,缓存文件不存在则重建缓存 $cachestr = ''; $cachelist = array('class','archive','newcomment','newpost','link','tag','statistic','topblog'); foreach ($cachelist as $cachename) { $cachestr .= (@include(JBLOG_ROOT.'cache_data/cache_'.$cachename.'.php')) ? '' : $cachename.','; } $cachestr = substr($cachestr,0,strrpos($cachestr,',')); if ($cachestr) { require_once(JBLOG_ROOT.'include/cache.func.php'); recache($cachestr); exit('所有缓存重建完成,请刷新页面!'); } unset($cachelist,$cachename,$cachestr);
先加载配置信息是因为,在创建其它缓存文件的时候,经常要用到系统的设置信息,如系统设置中有一个选项可以让用户自定义最新日志的数量,在缓存最新日志的时候就会用到该变量,所以必须先确保配置信息成功缓存后,再缓存其它项目。
总结:以上就是本篇文的全部内容,希望能对大家的学习有所帮助。
相关推荐:
The above is the detailed content of The principles, characteristics and usage of caching technology in php. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



PHP 8.4 brings several new features, security improvements, and performance improvements with healthy amounts of feature deprecations and removals. This guide explains how to install PHP 8.4 or upgrade to PHP 8.4 on Ubuntu, Debian, or their derivati

CakePHP is an open-source framework for PHP. It is intended to make developing, deploying and maintaining applications much easier. CakePHP is based on a MVC-like architecture that is both powerful and easy to grasp. Models, Views, and Controllers gu

To work on file upload we are going to use the form helper. Here, is an example for file upload.

Visual Studio Code, also known as VS Code, is a free source code editor — or integrated development environment (IDE) — available for all major operating systems. With a large collection of extensions for many programming languages, VS Code can be c

This tutorial demonstrates how to efficiently process XML documents using PHP. XML (eXtensible Markup Language) is a versatile text-based markup language designed for both human readability and machine parsing. It's commonly used for data storage an

CakePHP is an open source MVC framework. It makes developing, deploying and maintaining applications much easier. CakePHP has a number of libraries to reduce the overload of most common tasks.

A string is a sequence of characters, including letters, numbers, and symbols. This tutorial will learn how to calculate the number of vowels in a given string in PHP using different methods. The vowels in English are a, e, i, o, u, and they can be uppercase or lowercase. What is a vowel? Vowels are alphabetic characters that represent a specific pronunciation. There are five vowels in English, including uppercase and lowercase: a, e, i, o, u Example 1 Input: String = "Tutorialspoint" Output: 6 explain The vowels in the string "Tutorialspoint" are u, o, i, a, o, i. There are 6 yuan in total

JWT is an open standard based on JSON, used to securely transmit information between parties, mainly for identity authentication and information exchange. 1. JWT consists of three parts: Header, Payload and Signature. 2. The working principle of JWT includes three steps: generating JWT, verifying JWT and parsing Payload. 3. When using JWT for authentication in PHP, JWT can be generated and verified, and user role and permission information can be included in advanced usage. 4. Common errors include signature verification failure, token expiration, and payload oversized. Debugging skills include using debugging tools and logging. 5. Performance optimization and best practices include using appropriate signature algorithms, setting validity periods reasonably,
