[Помощь] Лог файлы хавают больше 2гиг на хостинге! Это нормально?

Grunuk

Участник
Регистрация
18 Янв 2008
Сообщения
192
Реакции
6
Ребята, помогите решить такую проблему:
после установки чудо-поиска по характеристикам в магазине и оптовые цены, постоянно создаются такие файлы:
sc-error_2011-11-21.log
и так на каждый день!
вот такие три ошибки в лог файлах:
Первая:
2011-11-21 00:00. array_merge(:( Argument #2 is not an array File: /published/SC/html/scripts/core_functions/product_functions.php Line: 844 Error #: 2
код с 834 по 845:
PHP:
	if(isset($callBackParam['extraParametrsTemplate'])){
		$_sqls = _prepareSearchExtraParameters($callBackParam['extraParametrsTemplate']);
		if(count($_sqls['where'])){
			$left_join = implode(' ', $_sqls['join']);
			$where_clause = trim(str_replace('WHERE', '', $where_clause));
			$where_clause = 'WHERE '.($where_clause?'('.$where_clause.') AND ':'').'('.implode(') AND (',$_sqls['where']).')';
			$group_by = ' GROUP BY p.productID';
		}
		$_sqlParams = array_merge($_sqlParams,$_sqls['params']);
	}
вторая ошибка:
2011-11-21 00:00. Division by zero File: /published/SC/html/scripts/core_functions/product_functions.php Line: 882 Error #: 2
код с 877 по 891:
PHP:
		// you save (value)
		$_Product['SavePrice'] = show_price($_Product['list_price']-$_Product['Price']);
		$_Product['SavePriceInGroup'] = show_price($_Product['Price_wo_group']-$_Product['Price']);
		// you save (%)
		if($_Product['list_price'])$_Product['SavePricePercent'] = ceil(((($_Product['list_price']-$_Product['Price'])/$_Product['list_price'])*100));
		$_Product['SavePricePercentInGroup'] = ceil(((($_Product['Price_wo_group']-$_Product['Price'])/$_Product['Price_wo_group'])*100));
		$_Product['PriceWithOutUnit'] = show_priceWithOutUnit( $_Product['Price'] );
		if ( ((float)$_Product['shipping_freight']) > 0 )
		$_Product['shipping_freightUC'] = show_price( $_Product['shipping_freight'] );
		$ProductsIDs[$_Product['productID']] = $Counter;
		$_Product['vkontakte_update_timestamp']= ($_Product['vkontakte_update_timestamp']>0)?Time::standartTime( $_Product['vkontakte_update_timestamp'] ):'';
		$Products[] = $_Product;
		$Counter++;
	}
третья ошибка:
2011-11-21 00:00. Division by zero File: /published/SC/html/scripts/modules/products/scripts/product_detailed.php Line: 121 Error #: 2
код с 117 строки по 124:
PHP:
			if($a[$column_price_name] > 0) $a['Price'] = $a[$column_price_name];
			$a['PriceWithUnitSwitch'] = show_price($a['Price'], ($_SESSION['current_currency'] == 9 ? 6:9) );
			$a["SavePriceInGroup"]		= show_price($a["Price_wo_group"]-$a["Price"]);
			$a["SavePricePercentInGroup"] = ceil(((($a["Price_wo_group"]-$a["Price"])/$a["Price_wo_group"])*100));
			$a["PriceWithUnit"] = show_price( $a["Price"] );
			$a["list_priceWithUnit"] = show_price( $a["list_price"] );
подскажите что поправить нужно
 
ошибка появляется если у вас есть поврежденные записи базы данных. Конкретные направления таковы: sqls () не возвращает соответствующий объект файла. params ссылается на несуществующий файл записи.
 
если причину не устраните, можно пока cron поставить для автоматического удаления лог файлов, например каждые 15 минут.
 
ошибка появляется если у вас есть поврежденные записи базы данных. Конкретные направления таковы: sqls () не возвращает соответствующий объект файла. params ссылается на несуществующий файл записи.

ок, как можно устранить эту ошибку? как найти тот несуществующий файл записи? или же что поменять в коде?
 
Ну дк все просто:

1. $_sqlParams = array_merge($_sqlParams,$_sqls['params']);
Написано же, что 2-рой аргумет($_sqls['params']) не массив, а только элемент, так и есть можно поробовать привести его к массиву и сделать так : $_sqlParams = array_merge($_sqlParams,(array)$_sqls['params']);

2. Деление на ноль, н не проблема, сделайте проверку перед делением в этом($_Product['Price_wo_group']) типа

3. То же что и 2 пункт, только проверяйте $a["Price_wo_group"]
 
Назад
Сверху