Перейти к содержанию
kopaweb19

[Решено] Постоянные ошибки с cache.php

Рекомендуемые сообщения

Магазин работает но постоянно в логе ошибки с:

 

/system/library/cache.php on line 38
/system/library/cache.php on line 40

/system/library/cache.php on line 36

 

Помогите исправить. Появилось после переноса движка из другого домена.

 

Кто согласиться дам доступ.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

было бы, конечно, неплохо привести пару ошибок, но быстрее всего нет прав на запись у каталога /system/cache
проверьте:)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

скорее не на запись - 766, а полных прав 777 :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нет права стоят 777.

ВОт пример ошибок:

 



2013-04-06 12:34:58 - PHP Warning: fopen(/var/www/***/data/www/***/system/cache/cache.get_manufacter_items_names.02202122232419181716151413121110988899091928119122114115116117118120150712313213313112614714614514414312412713413512812913012514114013913813713661011021041051061031001121111101081091071215971139698959994450494745444333536378482878685813839798033148149266562616364667069686727747173722875777678293031255259585756555453.1.1365255298) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: File name too long in /var/www/***/data/www/***/system/library/cache.php on line 36

2013-04-06 12:34:58 - PHP Warning: fwrite() expects parameter 1 to be resource, boolean given in /var/www/***/data/www/***/system/library/cache.php on line 38

2013-04-06 12:34:58 - PHP Warning: fclose() expects parameter 1 to be resource, boolean given in /var/www/***/data/www/***/system/library/cache.php on line 40

2013-04-06 12:35:20 - PHP Warning: fopen(/var/www/***/data/www/***/system/cache/cache.get_manufacter_items_names.02202122232419181716151413121110988899091928119122114115116117118120150712313213313112614714614514414312412713413512812913012514114013913813713661011021041051061031001121111101081091071215971139698959994450494745444333536378482878685813839798033148149266562616364667069686727747173722875777678293031255259585756555453.1.1365255320) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: File name too long in /var/www/***/data/www/***/system/library/cache.php on line 36
 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

написано ведь

File name too long

вопросы к автору кода, который формирует такой кэш-файл

cache.get_manufacter_items_names.02202122232419181716151413121110988899091928119122114115116117118120150712313213313112614714614514414312412713413512812913012514114013913813713661011021041051061031001121111101081091071215971139698959994450494745444333536378482878685813839798033148149266562616364667069686727747173722875777678293031255259585756555453.1.1365255298

= = =

 

еще можно поиском по файлам найти

get_manufacter_items_names

и переписать кэширование в тех местах

Изменено пользователем afwollis

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это делает модуль фильтра. С автором связаться никак не получается. Помогите исправить, вот текст где прописано get_manufacter_items_names:

 

	public function getManufacterItemNames($categories_id) {
		
		$cache_data = $this->cache->get('get_manufacter_items_names.' . $categories_id . '.' . $this->config->get('config_language_id'));
		
		if (!$cache_data && !is_array($cache_data)) {
		
			$query = $this->db->query("SELECT DISTINCT mnf.manufacturer_id as value, mnf.name, mnf.image FROM `" . DB_PREFIX . "manufacturer` mnf LEFT JOIN `" . DB_PREFIX . "product` as prd ON (mnf.manufacturer_id = prd.manufacturer_id) WHERE prd.product_id IN (SELECT product_id FROM `" . DB_PREFIX . "product_to_category` WHERE category_id IN (" . $this->db->escape($categories_id) . "))");
			
			$manufacters = $query->rows;
			
			$this->cache->set('get_manufacter_items_names.' . $categories_id . '.' . $this->config->get('config_language_id'), $manufacters);
		}
		else {
			$manufacters = $cache_data;
		}
		
		return $manufacters;
	
	}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

оберните это как то так.

 

$cache = md5(http_build_query(array ($categories_id)));

$cache_data = $this->cache->get('get_manufacter_items_names.' . $cache . '.' . $this->config->get('config_language_id'));

 

И это

$this->cache->set('get_manufacter_items_names.' . $categories_id . '.' . $this->config->get('config_language_id'), $manufacters);

поменяйте на

this->cache->set('get_manufacter_items_names.' . $cache . '.' . $this->config->get('config_language_id'), $manufacters);

  • +1 2

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

что за фильтр интересно?

 

Автоматический фильтр товаров 1.0.1. - https://opencartforum.com/files/file/446-avtomaticheskii-filtr-tovarov/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Yoda, спасибо за помощь. Исправил, работает, пока что ошибок нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

оберните это как то так.

 

$cache = md5(http_build_query(array ($categories_id)));

$cache_data = $this->cache->get('get_manufacter_items_names.' . $cache . '.' . $this->config->get('config_language_id'));

 

И это

$this->cache->set('get_manufacter_items_names.' . $categories_id . '.' . $this->config->get('config_language_id'), $manufacters);

поменяйте на

this->cache->set('get_manufacter_items_names.' . $cache . '.' . $this->config->get('config_language_id'), $manufacters);

 

А можно поинтересоваться. В этом случаи кеш когда очиститься?

или файлы будут бесконечно "размножаться" ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А можно поинтересоваться. В этом случаи кеш когда очиститься?

или файлы будут бесконечно "размножаться" ?

 

Кэш удалится как только будет устаревшим, т.е. через час (за время жизни отвечает переменная expire в файле system/library/cache.php). В кэше файлы бесконечно не размножаются, никогда. Если они там есть, то они нужны. Если у Вас размножаются, то что-то пошло не так.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кэш удалится как только будет устаревшим, т.е. через час (за время жизни отвечает переменная expire в файле system/library/cache.php). В кэше файлы бесконечно не размножаются, никогда. Если они там есть, то они нужны. Если у Вас размножаются, то что-то пошло не так.

 

Спасибо. Я так понял нельзя установить время хранения кеша, для отдельной переменной, при помощи this->cache->set

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

по дефолту нельзя, но открываем cache.php и за 5 минут допиливаем.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.