[phpBB Debug] PHP Warning: in file [ROOT]/includes/crs/crs_misc_functions.php on line 37: mime_content_type(): Empty filename or path
[phpBB Debug] PHP Warning: in file [ROOT]/includes/crs/crs_misc_functions.php on line 37: mime_content_type(): Empty filename or path
Zen Cart 源代码 cache.php

Zen Cart 源代码 cache.php




下载文件

文件名: cache.php
文件类型: PHP文件
文件大小: 6.09 KiB
MD5: b5b4d2f9c5e9c483d078ac997f92758f

cache.php - 关闭高亮
  1. <?php
  2. /**
  3.  * cache Class.
  4.  *
  5.  * @package classes
  6.  * @copyright Copyright 2003-2011 Zen Cart Development Team
  7.  * @copyright Portions Copyright 2003 osCommerce
  8.  * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
  9.  * @version $Id: cache.php 18695 2011-05-04 05:24:19Z drbyte $
  10.  */
  11. if (!defined('IS_ADMIN_FLAG')) {
  12.   die('Illegal Access');
  13. }
  14. /**
  15.  * cache Class.
  16.  * handles query caching
  17.  *
  18.  * @package classes
  19.  */
  20. class cache extends base {
  21.  
  22.   function sql_cache_exists($zf_query, $zf_cachetime) {
  23.     global $db;
  24.     $zp_cache_name = $this->cache_generate_cache_name($zf_query);
  25.     switch (SQL_CACHE_METHOD) {
  26.       case 'file':
  27.       // where using a single directory at the moment. Need to look at splitting into subdirectories
  28.       // like adodb
  29.       if (file_exists(DIR_FS_SQL_CACHE . '/' . $zp_cache_name . '.sql') && !$this->sql_cache_is_expired($zf_query, $zf_cachetime)) {
  30.         return true;
  31.       } else {
  32.         return false;
  33.       }
  34.       break;
  35.       case 'database':
  36.       $sql = "select * from " . TABLE_DB_CACHE . " where cache_entry_name = '" . $zp_cache_name . "'";
  37.       $zp_cache_exists = $db->Execute($sql);
  38.       if ($zp_cache_exists->RecordCount() > 0 && !$this->sql_cache_is_expired($zf_query, $zf_cachetime)) {
  39.         return true;
  40.       } else {
  41.         return false;
  42.       }
  43.       break;
  44.       case 'memory':
  45.       return false;
  46.       break;
  47.       case 'none':
  48.       default:
  49.       return false;
  50.       break;
  51.     }
  52.   }
  53.  
  54.   function sql_cache_is_expired($zf_query, $zf_cachetime) {
  55.     global $db;
  56.     $zp_cache_name = $this->cache_generate_cache_name($zf_query);
  57.     switch (SQL_CACHE_METHOD) {
  58.       case 'file':
  59.       if (@filemtime(DIR_FS_SQL_CACHE . '/' . $zp_cache_name . '.sql') > (time() - $zf_cachetime)) {
  60.         return false;
  61.       } else {
  62.         return true;
  63.       }
  64.       break;
  65.       case 'database':
  66.       $sql = "select * from " . TABLE_DB_CACHE . " where cache_entry_name = '" . $zp_cache_name ."'";
  67.       $cache_result = $db->Execute($sql);
  68.       if ($cache_result->RecordCount() > 0) {
  69.         $start_time = $cache_result->fields['cache_entry_created'];
  70.         if (time() - $start_time > $zf_cachetime) return true;
  71.         return false;
  72.       } else {
  73.         return true;
  74.       }
  75.       break;
  76.       case 'memory':
  77.       return true;
  78.       break;
  79.       case 'none':
  80.       default:
  81.       return true;
  82.       break;
  83.     }
  84.   }
  85.  
  86.   function sql_cache_expire_now($zf_query) {
  87.     global $db;
  88.     $zp_cache_name = $this->cache_generate_cache_name($zf_query);
  89.     switch (SQL_CACHE_METHOD) {
  90.       case 'file':
  91.       @unlink(DIR_FS_SQL_CACHE . '/' . $zp_cache_name . '.sql');
  92.       return true;
  93.       break;
  94.       case 'database':
  95.       $sql = "delete from " . TABLE_DB_CACHE . " where cache_entry_name = '" . $zp_cache_name . "'";
  96.       $db->Execute($sql);
  97.       return true;
  98.       break;
  99.       case 'memory':
  100.       unset($this->cache_array[$zp_cache_name]);
  101.       return true;
  102.       break;
  103.       case 'none':
  104.       default:
  105.       return true;
  106.       break;
  107.     }
  108.   }
  109.  
  110.   function sql_cache_store($zf_query, $zf_result_array) {
  111.     global $db;
  112.     $zp_cache_name = $this->cache_generate_cache_name($zf_query);
  113.     switch (SQL_CACHE_METHOD) {
  114.       case 'file':
  115.       $OUTPUT = serialize($zf_result_array);
  116.       $fp = fopen(DIR_FS_SQL_CACHE . '/' . $zp_cache_name . '.sql',"w");
  117.       fputs($fp, $OUTPUT);
  118.       fclose($fp);
  119.       return true;
  120.       break;
  121.       case 'database':
  122.       $sql = "select * from " . TABLE_DB_CACHE . " where cache_entry_name = '" . $zp_cache_name . "'";
  123.       $zp_cache_exists = $db->Execute($sql);
  124.       if ($zp_cache_exists->RecordCount() > 0) {
  125.         return true;
  126.       }
  127.       $result_serialize = $db->prepare_input(base64_encode(serialize($zf_result_array)));
  128.       $sql = "insert into " . TABLE_DB_CACHE . " set cache_entry_name = '" . $zp_cache_name . "',
  129.                                                 cache_data = '" . $result_serialize . "',
  130.                   cache_entry_created = '" . time() . "'";
  131.       $db->Execute($sql);
  132.       return true;
  133.       break;
  134.       case 'memory':
  135.       return true;
  136.       break;
  137.       case 'none':
  138.       default:
  139.       return true;
  140.       break;
  141.     }
  142.   }
  143.  
  144.   function sql_cache_read($zf_query) {
  145.     global $db;
  146.     $zp_cache_name = $this->cache_generate_cache_name($zf_query);
  147.     switch (SQL_CACHE_METHOD) {
  148.       case 'file':
  149.       $zp_fa = file(DIR_FS_SQL_CACHE . '/' . $zp_cache_name . '.sql');
  150.       $zp_result_array = unserialize(implode('', $zp_fa));
  151.       return $zp_result_array;
  152.       break;
  153.       case 'database':
  154.       $sql = "select * from " . TABLE_DB_CACHE . " where cache_entry_name = '" . $zp_cache_name . "'";
  155.       $zp_cache_result = $db->Execute($sql);
  156.       $zp_result_array = unserialize(base64_decode($zp_cache_result->fields['cache_data']));
  157.       return $zp_result_array;
  158.       break;
  159.       case 'memory':
  160.       return true;
  161.       break;
  162.       case 'none':
  163.       default:
  164.       return true;
  165.       break;
  166.     }
  167.   }
  168.  
  169.   function sql_cache_flush_cache() {
  170.     global $db;
  171.     switch (SQL_CACHE_METHOD) {
  172.       case 'file':
  173.       if ($za_dir = @dir(DIR_FS_SQL_CACHE)) {
  174.         while ($zv_file = $za_dir->read()) {
  175.           if (strstr($zv_file, '.sql') && strstr($zv_file, 'zc_')) {
  176.             @unlink(DIR_FS_SQL_CACHE . '/' . $zv_file);
  177.           }
  178.         }
  179.         $za_dir->close();
  180.       }
  181.       return true;
  182.       break;
  183.       case 'database':
  184.       $sql = "delete from " . TABLE_DB_CACHE;
  185.       $db->Execute($sql);
  186.       return true;
  187.       break;
  188.       case 'memory':
  189.       return true;
  190.       break;
  191.       case 'none':
  192.       default:
  193.       return true;
  194.       break;
  195.     }
  196.   }
  197.  
  198.   function cache_generate_cache_name($zf_query) {
  199.     switch (SQL_CACHE_METHOD) {
  200.       case 'file':
  201.       return 'zc_' . md5($zf_query);
  202.       break;
  203.       case 'database':
  204.       return 'zc_' . md5($zf_query);
  205.       break;
  206.       case 'memory':
  207.       return 'zc_' . md5($zf_query);
  208.       break;
  209.       case 'none':
  210.       default:
  211.       return true;
  212.       break;
  213.     }
  214.   }
  215. }
  216.