Heim > php教程 > PHP开发 > Hauptteil

Detaillierte Erläuterung des ecshop-Datenbankabfragecaches

黄舟
Freigeben: 2016-12-14 16:29:44
Original
1901 Leute haben es durchsucht

Die Abfrage-Cache-Datei befindet sich im Verzeichnis ecshop/upload/temp/query_cache.
Schreiben Sie ein Testdatei-Tutorial test1.php unter ecshop/upoad/, um den Abfrage-Cache zu testen.
Der Code lautet wie folgt:

PHP-Code
1. // Die ersten drei Sätze dienen hauptsächlich dazu, einige Initialisierungsarbeiten durchzuführen, damit ich das verwenden kann Klassenbibliotheksfunktionen in ecshop usw.
3. define('ECS_ADMIN', true);
5 /init.php')
6. /*******
7. Die GetALLCached-Funktion übernimmt hier einen Parameter einer SQL-Anweisung,
8. Hier können Sie diese Funktion einfach als eine Operation zum Ausführen einer SQL-Abfrage verstehen, um Ergebnisse zu erhalten.
9. *******/
10

ecs->table( "article") . " WHERE cat_id != 0 AND is_open = 1 AND open_type = 0 ORDER BY Article_id DESC LIMIT 0,4"); . /*

15. Array

16. (
17. [0] => Array
18. (
19 .                                                                                                                                                      🎜>24. [article_id ] => 🎜>29.  [2] => Array
30. (
31. [article_id] => 32. [title] => Handyspiel-Download
33 . )
34 . 
35. [3] => Array
37. [article_id] => 38. [title] => Mobile Werbung
39. )
PHP-Code

1273944294a:4:{i:0;a:2:{ s:10:"article_id";s:2 :"35";s:5:"title";s:27:"Ich entscheide über die Welt von „Wo““;}i:1;a:2:{s :10:"article_id";s:2:" 34";s:5:"title";s:14:"Popularisierung des 3G-Wissens";}i:2;a:2:{s:10:"article_id ";s:2:"32";s:5 :"title";s:18:"Handyspiel-Download";}i:3;a:2:{s:10:"article_id";s:2: "31";s:5:"title";s :31:"Nokia 6681 Handy-Werbewertschätzung";}}

Ich habe herausgefunden, dass es sich um eine Zeichenfolge verarbeiteter Dinge handelt (tatsächlich von der Serialisierung verarbeitet). Funktion)
Die Dinge in diesem SQLcache sind tatsächlich das, was ich gerade gedruckt habe. Das Ergebnis von print_r($article_array) kommt heraus.
Die Funktion $db->GetALLCached() wird gerade in der Datei test1.php verwendet.
Sie stammt aus der Datei ecshop/upload/includes/cls_mysql Tutorial.php.
GetALLCached() Diese Funktion wird Anruf An die beiden Funktionen, die tatsächlich den Cache verarbeiten (die SQLcache-Datei gerade).
Die erste Funktion ist setSqlCacheData

PHP-Code
1. Wenn das Ergebnis nicht zwischengespeichert wird, wird diese Funktion zuerst ausgeführt. Die Funktion dieser Funktion besteht darin, das von SQL erhaltene Ergebnisarray zu serialisieren und zu speichern es unter einem bestimmten Pfad
4

5. Funktion 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. Die Hauptfunktion dieser Funktion besteht darin, die serialisierten Dateien aus der SQLcache-Datenbankabfrage-Cache-Datei wiederherzustellen.
4. Wenn eine bestimmte SQL-Anweisung erneut ausgeführt wird, wird das Ergebnis der SQL-Anweisung zwischengespeichert, sodass keine Datenbankabfrage mehr erforderlich ist und es direkt aus der Cache-Datei gelesen werden kann.
5. ******/   
6.

 Funktion 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.             sonst  
24.             {  
25.                 $result['data'] = @unserialize($data);  
26.                 if ($result['data'] === false)  
27.                 {  
28.                     $result['storecache'] = true;  
29.                 }  
30.                 sonst  
31.                 {  
32.                     $result['storecache'] = false;  
33.                 }  
34.             }  
35.         }  
36.         sonst  
37.         {  
38.             $result['storecache'] = true;  
39.         }  
40.   
41.         $result zurückgeben;  
42.     }   

 更多相关文章请关注PHP中文网(www.php.cn)!


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Empfehlungen
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage