Jump to content

Recommended Posts

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

 

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

/system/library/cache.php on line 36

 

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Нет права стоят 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
 

Share this post


Link to post
Share on other sites

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

File name too long

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

cache.get_manufacter_items_names.02202122232419181716151413121110988899091928119122114115116117118120150712313213313112614714614514414312412713413512812913012514114013913813713661011021041051061031001121111101081091071215971139698959994450494745444333536378482878685813839798033148149266562616364667069686727747173722875777678293031255259585756555453.1.1365255298

= = =

 

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

get_manufacter_items_names

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

Edited by afwollis

Share this post


Link to post
Share on other sites

Это делает модуль фильтра. С автором связаться никак не получается. Помогите исправить, вот текст где прописано 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;
	
	}

Share this post


Link to post
Share on other sites

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

 

$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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

$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);

 

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

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

Share this post


Link to post
Share on other sites

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

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

 

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

Share this post


Link to post
Share on other sites

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

 

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.