Configuration 静态化

1、创建缓存文件夹

在 catalog 目录下创建一个缓存目录“cache”,确认此目录的权限为 755 或者 777,即允许可写

2、修改配置文件:includes/configure.php

添加如下定义代码:

define(‘DIR_MY_CACHE’, DIR_FS_CATALOG . ’cache/’);

3、修改文件 includes/application_top.php

查找:

// set the application parameters
$configuration_query = tep_db_query('select configuration_key as cfgKey,
configuration_value as cfgValue from ' . TABLE_CONFIGURATION);
while ($configuration = tep_db_fetch_array($configuration_query)) {
  define($configuration['cfgKey'], $configuration['cfgValue']);
}

替换为如下代码:

// 将配置信息写入缓存文件
function writeConfiguration(&$var, $filename='configuration.cache') {
  $filename = DIR_MY_CACHE . $filename;
  $success = false;

  if ($fp = @fopen($filename, 'w')) {
    flock($fp, 2); // LOCK_EX         
    fputs($fp, serialize($var));
    flock($fp, 3); // LOCK_UN
    fclose($fp);
    $success = true;
  }

  return $success;
}

// 读取配置信息的缓存文件
function readConfiguration(&$var, $filename='configuration.cache'){
  $filename = DIR_MY_CACHE . $filename;
  $success = false;

  if ($fp = @fopen($filename, 'r')) {
    $szdata = fread($fp, filesize($filename));
    fclose($fp);
    $var = unserialize($szdata);
    $success = true;
  }

  return $success;
}

if (!readConfiguration($result)) {
  // 如果没有配置缓存文件,则会先获取所有配置,然后创建缓存文件
  $result = array();

  $configuration_query = tep_db_query('select configuration_key as cfgKey, configuration_value as cfgValue from ' . TABLE_CONFIGURATION);
  while ($configuration = tep_db_fetch_array($configuration_query)) {
    $result[] = array('key'=>$configuration['cfgKey'],'value'=>$configuration['cfgValue']);
  }

  tep_db_free_result($configuration_query);
  writeConfiguration($result);
}

foreach ($result as $value) {
  define($value['key'],$value['value']);
}

4、修改配置文件:admin/includes/configure.php 添加如下定义代码:

define(‘DIR_MY_CACHE’, DIR_FS_CATALOG . ’cache/’);

5、修改文件:admin/configuration.php

查找:

tep_db_query("update " . TABLE_CONFIGURATION . " set configuration_value = '" . tep_db_input($configuration_value) . "', last_modified = now() where configuration_id = '" . (int)$cID . "'");

追加以下代码:

updateConfiguration();

6、修改文件:admin/modules.php 查找:

  tep_db_query("update " . TABLE_CONFIGURATION . " set configuration_value = '" . $value . "' where configuration_key = '" . $key . "'");
}

追加以下代码:

updateConfiguration();

7、修改文件:admin/includes/functions/general.php

在最后的“?>”之前追加 writeConfiguration 函数和 updateConfiguration 函数:

function writeConfiguration(&$var, $filename='configuration.cache') {
  $filename = DIR_MY_CACHE . $filename;
  $success = false;
  if ($fp = @fopen($filename, 'w')) {       
    flock($fp, 2); // LOCK_EX
    fputs($fp, serialize($var));
    flock($fp, 3); // LOCK_UN
    fclose($fp);
    $success = true;
  }

  return $success;
}

function updateConfiguration($filename='configuration.cache') {
  $result = array();
  $configuration_query = tep_db_query('select configuration_key as cfgKey, configuration_value as cfgValue from ' . TABLE_CONFIGURATION);

  while ($configuration = tep_db_fetch_array($configuration_query)) {
    $result[] = array('key'=>$configuration['cfgKey'],'value'=>$configuration['cfgValue']);
  }

  tep_db_free_result($configuration_query);
  writeConfiguration($result,$filename);
}

results matching ""

    No results matching ""