How PHP cache classes are implemented

Source: Internet
Author: User
Tags apc echo date php server save file
This article mainly to share with you a PHP cache class implementation of the example, I hope to help everyone.

<?php/** Cache class Cache*/class Caches {//cache directory var $cacheRoot = "./cache/";//cache update time in seconds, 0 for var $cacheLimitTime = 0;//Cache file name Var $cacheFileName = "";//cache extension var $cacheFileExt = "PHP";/* constructor * int $cacheLimitTime cache update Time */function cache ($cacheLim  Ittime) {if (Intval ($cacheLimitTime)) $this->cachelimittime = $cacheLimitTime;  $this->cachefilename = $this->getcachefilename (); Ob_start ();}  /* * Check that the cache file is returned within the SET update time *: If the file content is returned within the update time, the reverse returns the failure */function Cachecheck () {if (File_exists ($this->cachefilename  ) {$cTime = $this->getfilecreatetime ($this->cachefilename);  if ($cTime + $this->cachelimittime > Time ()) {echo file_get_contents ($this->cachefilename);  Ob_end_flush ();  Exit }} return false;} /* * cache file or output static * string $staticFileName static file name (with relative path) */function caching ($staticFileName = "") {if ($this->cachef  Ilename) {$cacheContent = Ob_get_contents ();  Ob_end_flush (); if ($staticFileName) {$this->savefile ($staticFileName,$cacheContent);  } if ($this->cachelimittime) $this->savefile ($this->cachefilename, $cacheContent); }/* * Clear Cache file * String $fileName Specify file name (with function) or all * return: Clear Success returns True, Reverse returns false */function ClearCache ($fileName = "Al L ") {if ($fileName! =" All ") {$fileName = $this->cacheroot. Strtoupper (MD5 ($fileName)).". ".  $this->cachefileext;  if (file_exists ($fileName)) {return @unlink ($fileName);  }else return false;  if (Is_dir ($this->cacheroot)) {if ($dir = @opendir ($this->cacheroot)) {while ($file = @readdir ($dir  ) {$check = Is_dir ($file);  if (! $check) @unlink ($this->cacheroot. $file);  } @closedir ($dir);  return true;  }else{return false;  }}else{return false; }}/* generates a cache file name based on the current dynamic file */function Getcachefilename () {return $this->cacheroot. Strtoupper (MD5 ($_server[) Request_uri "])).".". $this->cachefileext;} /* * Cache File setup Time * string $fileName cache filename (with relative path) * Returned: File generation time in seconds, file does not exist return 0 */function Getfilecreatetime($fileName)  {if (! Trim ($fileName)) return 0;  if (file_exists ($fileName)) {return intval (Filemtime ($fileName)); }else return 0;} /* * Save File * String $fileName file name (with relative path) * String $text file Contents * Returned: Successfully returned ture, failed to return false */function SaveFile ($fileName, $t  EXT) {if (! $fileName | |! $text) return false; if ($this->makedir (dirname ($fileName))) {if ($fp = fopen ($fileName, "w")) {if (@fwrite ($FP, $text)) {F  Close ($FP);  return true;  }else {fclose ($FP);  return false; }}} return false;} /* * Continuous Directory * String $dir directory String * int $mode Permission number * return: Successfully created or all built returns True, other methods return False */function MakeDir ($dir, $mode = "  0777 ") {if (! $dir) return 0;  $dir = str_replace ("\ \", "/", $dir);  $mdir = ""; foreach (Explode ("/", $dir) as $val) {$mdir. = $val. "  /";  if ($val = = ":" | | $val = = "." | | Trim ($val) = = "") continue;  if (! file_exists ($mdir)) {if (! @mkdir ($mdir, $mode)) {return false; }}} return true;}? >

When using this cache class, you can save the above code as cache.php, as follows:

Include ("cache.php"), $cache = new cache, $cache->cachecheck (), Echo date ("Y-m-d h:i:s"), $cache->caching ();

Reprint Address: https://www.cnblogs.com/zhangmiaomiao/p/6013314.html

Common caching techniques in PHP are categorized as:

1. Full page static cache

That is, the page is all generated HTML static page, the user accesses the static page directly, but not to go to the PHP server parsing process. This way, in the CMS system is more common, such as dedecms;

A more common way to implement this is with output caching:

Ob_start ()
The code to run *******
$content = Ob_get_contents ();
Write cached content to HTML file * * * *
Ob_end_clean ();

2. Page Partial cache

In this way, the infrequently changed parts of a page are statically cached, and the frequently changing blocks are not cached, assembled and displayed together, can be implemented in a way similar to ob_get_contents, or can take advantage of page fragment caching policies like ESI, The cache used to make a relatively static fragment portion of a dynamic page (ESI technology, please Baidu, here is an unknown).

This method can be used for product pages such as the mall;

3. Data cache

As the name implies, is a way to cache data, for example, a product information in the mall, when the product ID to request, will be included in the store information, merchandise information and other data, this can be cached in a PHP file, the file name contains the product ID to build a unique mark The next time someone wants to view this product, the first thing is to directly tune the information inside the file, instead of going to the database query; in fact, the cache file is a PHP array.

Ecmall Mall system inside the use of this way;

4. Query cache

In fact, this with the data cache is a way of thinking, is based on query statements to cache, the query to get the data cached in a file, the next time you encounter the same query, directly from the file to adjust the data, will not check the database, but the cache file name here may need to use a query statement as the base point to establish a unique;

Cache by Time Change

In fact, this is not a true caching method, the above 2, 3, 4 of the cache technology is generally used in the time to change the judgment, that is, for the cache file you need to set a valid time, in this effective time, the same access will first take the contents of the cache file, but more than the set cache time, You need to re-fetch the data from the database and produce the latest cache files; For example, I will be the first page of our mall is set up 2 hours to update;

5. Cache by content Change

This is not an independent caching technology, need to be combined with, that is, when the database content is modified, immediately update the cache file;

For example, a large number of shopping malls, a lot of goods, commodity tables must be relatively large, the pressure of the table is also heavier; we can cache the product display page;

When the merchant changes the information of this product in the background, click Save, we update the cache file at the same time, then, when the buyer accesses this product information, it actually accesses a static page, and does not need to visit the database again;

Imagine, if the product page does not cache, then each visit to a commodity will go to the database to check once, if there are 100,000 people online browsing products, the server pressure is big;

6. In-Memory cache

The first thing you can think of is that memcached;memcached is a high-performance distributed memory cache server. The general purpose is to reduce the number of database accesses by caching database query results to improve the speed and scalability of dynamic Web applications.

It is to cache the information that needs to be cached in the system memory, need to obtain information, directly into the memory, the more common way is key–>value way;

<?php
$memcachehost = ' 192.168.6.191 ';
$memcacheport = 11211;
$memcachelife = 60;
$memcache = new Memcache;
$memcache->connect ($memcachehost, $memcacheport) or Die ("Could not Connect");
$memcache->set (' key ', ' cached content ');
$get = $memcache->get ($key); Get information
?>

7. Apache Cache Module

After the installation of Apache, the cache is not allowed. If you have a cache or squid server that requires web acceleration, you need to set it up in htttpd.conf, as long as you activate the Mod_cache module when you install Apache.

When installing Apache:./configure–enable-cache–enable-disk-cache–enable-mem-cache

8. PHP APC Cache extension

PHP has an APC cache extension, Windows is php_apc.dll, you need to load the module first, and then configure it in php.ini:

[APC]
Extension=php_apc.dll
apc.rfc1867 = On
Upload_max_filesize = 100M
Post_max_size = 100M
Apc.max_file_size = 200M
Upload_max_filesize = 1000M
Post_max_size = 1000M
Max_execution_time = 600; Maximum time value per php page (seconds), default 30 seconds
Max_input_time = 600; The maximum time required for each PHP page to receive data, by default 60
Memory_limit = 128M; Maximum memory consumed per PHP page, default 8M

9. OpCode Cache

We know that PHP's execution process can be used to show:

First, the PHP code is parsed into tokens, and then compiled into opcode code, and finally execute opcode code, return the results; So, for the same PHP file, the first time the runtime can cache its opcode code, the next time you execute this page, will go to find the cache opcode code , take the final step directly, without needing the intermediate steps.

More well-known is XCache, Turck MM Cache, PHP Accelerator and so on.

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.