Home  >  Article  >  php教程  >  Detailed explanation of ecshop database query cache

Detailed explanation of ecshop database query cache

黄舟
黄舟Original
2016-12-14 16:29:441793browse

The query cache file is under the ecshop/upload/temp/query_cache directory
Write a test file test1.php tutorial under ecshop/upoad/ to test its query cache.
The code is as follows:

Php code
1. 2. //The first three sentences are mainly to do some initialization work, so that I can use the class library functions in ecshop, etc.
3. define('IN_ECS', true);
4. define('ECS_ADMIN', true);
5. require(dirname(__FILE__) . '/includes/init.php');
6. /*******
7. The GetALLCached function here takes a parameter of a sql statement,
8. Here you can simply understand this function as an operation of executing a sql query to obtain results.
9.*******/
10

. $article_array = $db->GetALLCached("SELECT article_id, title FROM " . $ecs->table("article") . " WHERE cat_id != 0 AND is_open = 1 AND open_type = 0 ORDER BY article_id DESC LIMIT 0,4");
11.
12. print_r($article_array);
13. //The printed array result is as follows
14. /*
15. Array
16. (
17. [0] => ; Array
18. (
19. [article_id] => [1] => Array
[2] t; Array
30. (
31. [ article_id] => 32
32. [article_id] => 31
38. [Title] = & gt; Nokia 6681 mobile advertising appreciation
39.)
40. */
42.? & Gt; Let's open the sqlcache file and take a look at the

Php code

1. 1273944294a:4:{i:0;a:2:{s:10:"article_id";s:2 :"35";s:5:"title";s:27:"I decide the world of "Wo"";}i:1;a:2:{s:10:"article_id";s:2:" 34";s:5:"title";s:14:"Popularization of 3G knowledge";}i:2;a:2:{s:10:"article_id";s:2:"32";s:5 :"title";s:18:"Mobile Game Download";}i:3;a:2:{s:10:"article_id";s:2:"31";s:5:"title";s :31:"Nokia 6681 mobile phone advertisement appreciation";}}

I found out that it is a string of processed things (actually processed by the serialize function)
The things in this sqlcache are actually the print_r($article_array just printed out )the result of.
The function $db->GetALLCached() was used in the test1.php file just now
It comes from the ecshop/upload/includes/cls_mysql tutorial.php file
GetALLCached() This function will call 2 actual processes for processing The function of caching (the sqlcache file just now).
The first function is setSqlCacheData

Php code
1.      
2. /*
3. Function to set the query cache. If the query result of the sql statement in the GetALLCached function parameter is not cached, this function will be executed first , the function of this function is to serialize the result array obtained by sql and store it under a certain path
4. */

5. function setSqlCacheData($result, $data)  
6.     {  
7.         if ($result['storecache'] === true && $result['filename'])  
8.         {  
9.             @file_put_contents($result['filename'], '' . time() . serialize($data));  
10.             clearstatcache();  
11.         }  
12.     }  
 第二个函数是getSqlCacheData
Php代码 
1. /*******
2.
3. The main function of this function is to restore the serialized files from the sqlcache database query cache file.
4. In this way, if a certain sql statement is executed again, the result of the sql statement has been cached, so there is no need to query the database anymore, and it can be read directly from the cache file.
5. ******/   
6.

 function getSqlCacheData($sql, $cached = '')  
7.     {  
8.         $sql = trim($sql);  
9.   
10.         $result = array();  
11.         $result['filename'] = $this->root_path . $this->cache_data_dir . 'sqlcache_' . abs(crc32($this->dbhash . $sql)) . '_' . md5($this->dbhash . $sql) . '.php';  
12.   
13.         $data = @file_get_contents($result['filename']);  
14.         if (isset($data{23}))  
15.         {  
16.             $filetime = substr($data, 13, 10);  
17.             $data     = substr($data, 23);  
18.               
19.             if (($cached == 'FILEFIRST' && time() > $filetime + $this->max_cache_time) || ($cached == 'MYSQLFIRST' && $this->table_lastupdate($this->get_table_name($sql)) > $filetime))  
20.             {  
21.                 $result['storecache'] = true;  
22.             }  
23.             else  
24.             {  
25.                 $result['data'] = @unserialize($data);  
26.                 if ($result['data'] === false)  
27.                 {  
28.                     $result['storecache'] = true;  
29.                 }  
30.                 else  
31.                 {  
32.                     $result['storecache'] = false;  
33.                 }  
34.             }  
35.         }  
36.         else  
37.         {  
38.             $result['storecache'] = true;  
39.         }  
40.   
41.         return $result;  
42.     }   

 更多相关文章请关注PHP中文网(m.sbmmt.com)!


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn