搜索
首页php教程PHP开发ecshop 数据库查询缓存详解

查询缓存文件在ecshop/upload/temp/query_cache目录下面
在ecshop/upoad/下面编写一个测试文件test1.php教程,用来测试它的查询缓存。
代码如下:
 
Php代码 
1. 2. //前面三句主要是做些初始化工作,让我可以使用ecshop里面的类库函数等
3. define('IN_ECS', true);
4. define('ECS_ADMIN', true);
5. require(dirname(__FILE__) . '/includes/init.php');
6. /*******
7. 这里的GetALLCached函数里面带了一个sql语句的参数,
8. 这里可以先简单的把这个函数理解成执行sql查询获取结果的操作。
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. //打印出来的数组结果如下  
14. /* 
15. Array 
16. ( 
17.     [0] => Array 
18.         ( 
19.             [article_id] => 35 
20.             [title] => “沃”的世界我做主 
21.         ) 
22.  
23.     [1] => Array 
24.         ( 
25.             [article_id] => 34 
26.             [title] => 3G知识普及 
27.         ) 
28.  
29.     [2] => Array 
30.         ( 
31.             [article_id] => 32 
32.             [title] => 手机游戏下载 
33.         ) 
34.  
35.     [3] => Array 
36.         ( 
37.             [article_id] => 31 
38.             [title] => 诺基亚6681手机广告欣赏 
39.         ) 
40.  
41. */  
42. ?>  
 
 我们现在去看ecshop/upload/temp/query_caches目录,发现多了一个sqlcache的文件,我们打开来看
 
Php代码

1. 1273944294a:4:{i:0;a:2:{s:10:"article_id";s:2:"35";s:5:"title";s:27:"“沃”的世界我做主";}i:1;a:2:{s:10:"article_id";s:2:"34";s:5:"title";s:14:"3G知识普及";}i:2;a:2:{s:10:"article_id";s:2:"32";s:5:"title";s:18:"手机游戏下载";}i:3;a:2:{s:10:"article_id";s:2:"31";s:5:"title";s:31:"诺基亚6681手机广告欣赏";}}  
 
 发现是一串经过什么处理的东西(实际上是经过serialize函数处理)
这个sqlcache里面的东西实际上就是刚才打印出来的print_r($article_array)的结果。
在刚才的test1.php文件中使用了$db->GetALLCached()这个函数
它来自ecshop/upload/includes/cls_mysql教程.php文件中
GetALLCached()该函数会调用到2个实际来处理缓存(就是刚才的sqlcache文件)的函数。
第一个函数是setSqlCacheData
 
Php代码 
1.       
2. /* 
3. 设置查询缓存的函数,如果GetALLCached函数参数中的sql语句的查询结果没有被缓存, 则先执行的是这个函数,该函数的作用是将sql获取的结果数组经过序列化以后存储在某个路径下面 
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. 该函数的主要作用是从sqlcache数据库查询缓存文件中将被序列化过的文件还原。 
4. 这样就如果再执行某条sql语句,该sql语句的结果已经被缓存下来,就不用再去数据库查询了,直接去缓存文件中读取。 
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中文网(www.php.cn)!


声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )专业的PHP集成开发工具