Прошу помощи, т.к. уже не знаю откуда ноги ростут. Делаю кеширование:
define ( 'ROOT_DIR', dirname ( __FILE__ ) );
define ( 'ENGINE_DIR', ROOT_DIR );
function dle_cache($prefix) {
$key = $prefix;
$buffer = @file_get_contents( ENGINE_DIR . "/cache/" . $key . ".tmp" );
$file_date = @filemtime( ENGINE_DIR . "/cache/" . $key . ".tmp" );
$file_date = time()-$file_date;
if ( $file_date > 86400 ) {
$buffer = false;
@unlink( ENGINE_DIR . "/cache/" . $key . ".tmp" );
}
return $buffer;
}
function create_cache_refer($prefix, $cache_text) {
$key = $prefix;
file_put_contents (ENGINE_DIR . "/cache/" . $key . ".tmp", $cache_text, LOCK_EX);
@chmod( ENGINE_DIR . "/cache/" . $key . ".tmp", 0666 );
}
$tyres_options = unserialize(dle_cache( "tyres_options" ));
if( $tyres_options === false) {
$param = array("4", "5", "7", "8", "17");
$rs1 = db_query("SELECT p.productID, pv.option_value, pv.optionID FROM ss_products as p, ss_product_options_values as pv WHERE p.categoryID = 79 AND p.productID = pv.productID AND pv.optionID in ('" . join("','", $param) . "')");
while ($result_option = db_fetch_assoc($rs1)) {
if($result_option['optionID'] == "4") {
if($result_option['option_value'] != '') { $input4[] = $result_option['option_value']; }
}
if($result_option['optionID'] == "5") {
if($result_option['option_value'] != '') { $input5[] = $result_option['option_value']; }
}
if($result_option['optionID'] == "7") {
if($result_option['option_value'] != '') { $input7[] = $result_option['option_value']; }
}
if($result_option['optionID'] == "8") {
if($result_option['option_value'] != '') { $input8[] = $result_option['option_value']; }
}
if($result_option['optionID'] == "17") {
if($result_option['option_value'] != '') { $input17[] = $result_option['option_value']; }
}
}
$result7 = array_unique($input7);
natsort($result7);
$result8 = array_unique($input8);
natsort($result8);
$result5 = array_unique($input5);
natsort($result5);
$result17 = array_unique($input17);
natsort($result17);
$result4 = array_unique($input4);
asort($result4);
$tyres_options = array($result4, $result5, $result7, $result8, $result17);
create_cache_refer( "tyres_options", serialize($tyres_options) );
}
Хотел так сказать приятное сделать серверу, но прикол в том что иногда при обновлении страницы она упорно стопорится на каком-то этапе и перестает обрабатываться:
Отловить какую-то закономерность не получается, иногда все хорошо, но раз 20 обновишь страницу и снова вот такой обрезок. На другом сервере (с php 5.3.3) с таким же кодом все работает, а на этом с 5.3.2 не хочет.
Ссылками засирать форум не буду, на скрине виден адрес сайта, можно пообновлять главную получить результат (