************************
* This Package has not contain any files,only below code is activity.
************************
In application_top.php,every page will load configurations each once,there is every low efficiently.
So,save configuration into a cache file,That is very cool.
************************
* Code
************************
1. File includes/application_top.php
Find:
// 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']);
}
Replace with below:
// BEGIN REPLACE BY CONFIGURATION CACHES by jason chuh
function writeConfiguration(&$var, $filename='configuration.cache') {
$filename = '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 readCofiguration(&$var, $filename='configuration.cache'){
$filename = 'cache/' . $filename;
$success = false;
if ($fp = @fopen($filename, 'r')) {
$szdata = fread($fp, filesize($filename));
fclose($fp);
$var = unserialize($szdata);
$success = true;
}
return $success;
}
if (!readCofiguration($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']);
}
// END REPLACE BY CONFIGURATION CACHES
2. And in file admin/configuration.php
find:
tep_db_query("update " . TABLE_CONFIGURATION . " set configuration_value = '" . tep_db_input($configuration_value) . "', last_modified = now() where configuration_id = '" . (int)$cID . "'");
Replace with below:
// UPDATE CACHE by jason chuh
updateConfiguration();
3.The last change is in file admin/includes/functions/general.php
Append below:
function writeConfiguration(&$var, $filename='configuration.cache') {
$filename = '../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);
}
Notice:
Default cache path is set to "catalog/cache",If you want to change it ,find "cache" in above code and replace it.
hopy you enjoy.
More...
Bookmarks