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"); . /*
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)!