Проблема с Cache или путешествия по хостингам (sweb.ru)

Приветствую

Я уже писал про проблему с кэшем. Меня посылали на похожие темы, которые уже обсуждались, но все эти ответы так и не помогли решить проблему.

На некоторое время меня это перестало беспокоить, так как я просто сменил хостинг (где-то я про это тоже отписывался). На том хостинге проблем с кэшем не возникло, но было множество других (не касающихся движка).

И я вернулся обратно на sweb, так как мытляться от хостера к хостеру не хочется. Вернулась и не решенная проблема с cache.

Так вот, может тут кто-то есть, кто хостится на swebe, можете помочь с проблемой подключения кэша?

И вопрос номер два: в следующей версии движка есть какие-то изменения в этом вопросе? Может не стоит беспокоиться, а просто подождать следующую версию?

РЕШЕНИЕ ПРОБЛЕМЫ
Спасибо, bandit'у за подробно расписанное пособие по решению проблемы cache на хостинге sweb.ru. Выношу в пост, чтобы было легче найти.

I. Создаем папку в корне с названием tmp. Устанавливаем на нее права 777.

II. Переименовываем каталог /classes/lib/external/DklabCache/Zend в Zend2.

Делаем изменения в следующих файлах:

1. \classes\modules\sys_cache\Cache.class.php
Заменить:
require_once('Zend/Cache.php');
на:
require_once('Zend2/Cache.php');

Заменить:
require_once('Zend/Cache/Backend/File.php');
на:
require_once('Zend2/Cache/Backend/File.php');

Заменить:
require_once('Zend/Cache/Backend/Memcached.php');
на:
require_once('Zend2/Cache/Backend/Memcached.php');

2. \classes\lib\external\DklabCache\Cache\Backend\Profiler.php
Заменить:
require_once «Zend/Cache/Backend/Interface.php»;
на:
require_once «Zend2/Cache/Backend/Interface.php»;

3. \classes\lib\external\DklabCache\Cache\Backend\TagEmuWrapper.php
Заменить:
require_once «Zend/Cache/Backend/Interface.php»;
на:
require_once «Zend2/Cache/Backend/Interface.php»;

4. \classes\lib\external\DklabCache\Zend2\Cache.php
Заменить все:
require_once 'Zend/Loader.php';
на:
require_once 'Zend2/Loader.php';

Заменить:
require_once 'Zend/Cache/Exception.php';
на:
require_once 'Zend2/Cache/Exception.php';

5. \classes\lib\external\DklabCache\Zend2\Cache\Backend.php
Заменить:
require_once 'Zend/Loader.php';
на:
require_once 'Zend2/Loader.php';

6. \classes\lib\external\DklabCache\Zend2\Cache\Exception.php
Заменить:
require_once 'Zend/Exception.php';
на:
require_once 'Zend2/Exception.php';

7. \classes\lib\external\DklabCache\Zend2\Cache\Backend\File.php
Заменить:
require_once 'Zend/Cache/Backend/Interface.php';
на:
require_once 'Zend2/Cache/Backend/Interface.php';

Заменить:
require_once 'Zend/Cache/Backend.php';
на:
require_once 'Zend2/Cache/Backend.php';

8. \classes\lib\external\DklabCache\Zend2\Cache\Backend\Memcached.php
Заменить:
require_once 'Zend/Cache/Backend/Interface.php';
на:
require_once 'Zend2/Cache/Backend/Interface.php';

Заменить:
require_once 'Zend/Cache/Backend.php';
на:
require_once 'Zend2/Cache/Backend.php';

III. В файле /config/config.php

1. Включаем кэширование в строке:
define('SYS_CACHE_USE',true); // использовать кеширование или нет

2. Указываем путь к папке tmp
define('SYS_CACHE_DIR',$sTmpDir.'/home/тут_какая-то_буква)/_логин_на_хостинге/_папка_с_сайтом/public_html/tmp/');
*Полный адрес можно узнать у хостера или посмотреть какой адрес выводится при ошибке cache

55 комментариев

avatar
Я хостюсь у sweb.ru, проблему кеширования решил вот прочитав вот здесь
avatar
Тоже это читал и делал как написано, не помогло. Можешь мне свой конфиг дать? Может я все же что-то не так делаю…
avatar
В конфиге ничего не менялось, кроме правильно путь до tmp:

define('SYS_CACHE_DIR',$sTmpDir.'/home/a/apsmru/blogs/public_html/tmp/');
avatar
А что дает кэширование и чем оно отличается?
memcache и file cache?
Когда его надо включать, при какой нагрузке?
avatar
мемкеш в озу вертит а файлкеш временные файлики создаёт на жестком диске, которых потом всё больше и больше :)
avatar
ну и соответственно включение режима кеширования:

define('SYS_CACHE_USE',true);
avatar

Вот все равно
Fatal error: Uncaught exception 'Zend_Cache_Exception' with message 'Incorrect option name: cache_dir' in /opt/php5/lib/ZendFramework/library/Zend/Cache.php:101 Stack trace: #0 /opt/php5/lib/ZendFramework/library/Zend/Cache/Backend.php(112): Zend_Cache::throwException('Incorrect optio...') #1 /opt/php5/lib/ZendFramework/library/Zend/Cache/Backend.php(75): Zend_Cache_Backend->setOption('cache_dir', '/home/v/vinbenz...') #2 /opt/php5/lib/ZendFramework/library/Zend/Cache/Backend/File.php(105): Zend_Cache_Backend->__construct(Array) #3 /home/v/vinbenzzzi/lacn/public_html/classes/modules/sys_cache/Cache.class.php(71): Zend_Cache_Backend_File->__construct(Array) #4 /home/v/vinbenzzzi/lacn/public_html/classes/engine/Engine.class.php(68): Cache->Init() #5 /home/v/vinbenzzzi/lacn/public_html/classes/engine/Router.class.php(95): Engine->InitModules() #6 /home/v/vinbenzzzi/lacn/public_html/index.php(31): Router->Exec() #7 {main} thrown in /opt/php5/lib/ZendFramework/library/Zend/Cache.php on line 101
avatar
Итак я взял последний SVN (Changeset [135]), сделал полностью рабочую версию для нашего «чудо» хостинга. От тебя лишь требуется прописать в config/config.db.php свою данные. В config/config.php конкретно для тебя, прописал правильный путь до темпа. Протестировал, все работает!

Скачать
avatar
А что именно такого ты там сделал, что оно должно работать? Помимо прописанного пути до tmp? ))
avatar
Кстати, ты какую версию-то у себя тогда настраивал? Я у себя ставил 2.0
avatar
Удивительно, но работает, спасибо )
avatar
Зову к себе на сервер если что, безвозмездно. cpanel
Живу не на Пресне, но относительно рядом)
  • ozz
  • 0
avatar
Спасибо ) Но мне бы лучше решить эту проблему на данном хостинге и сайтов у меня много )
avatar
Если все на ls, то можно со всеми:)
avatar
нет, не на ls
avatar
Уже озвучивал идею: сделать ЖУ-специфичный хостинг. За деньги :)
Чтоб одной кнопкой создавался сайт (в смысле настройка поиска, мемкеша) гуй-конфигуратор настроек. Популярность движка растет — можно немного подзаработать, особенно если сервер не особо нагружен.
avatar
еще нужно переименовать папку и пути к ней с zend на zend2
создать папку для кеша и прописать к ней путь в конфиге.
все работает на ура.
  • _et
  • +1
avatar
Именно это я и сделал для vinbenzzzin
avatar
А вот где папка zend?
Бандиту спасибо за то, что сделал, но вот чтобы он объяснил что именно сделал я никак не могу
avatar
Так, папку zend нашел
\classes\lib\external\DklabCache\zend

Остался вопрос, а где менять пути к ней?
avatar
Переименовываем каталог /classes/lib/external/DklabCache/Zend в Zend2.

Сделать изменения в следующих файлах:

1. \classes\modules\sys_cache\Cache.class.php

Заменить:

require_once('Zend/Cache.php');

на:

require_once('Zend2/Cache.php');

Заменить:

require_once('Zend/Cache/Backend/File.php');

на:

require_once('Zend2/Cache/Backend/File.php');

Заменить:

require_once('Zend/Cache/Backend/Memcached.php');

на:

require_once('Zend2/Cache/Backend/Memcached.php');

2. \classes\lib\external\DklabCache\Cache\Backend\Profiler.php

Заменить:

require_once «Zend/Cache/Backend/Interface.php»;

на:

require_once «Zend2/Cache/Backend/Interface.php»;

3. \classes\lib\external\DklabCache\Cache\Backend\TagEmuWrapper.php

Заменить:

require_once «Zend/Cache/Backend/Interface.php»;

на:

require_once «Zend2/Cache/Backend/Interface.php»;

4. \classes\lib\external\DklabCache\Zend2\Cache.php

Заменить все:

require_once 'Zend/Loader.php';

на:

require_once 'Zend2/Loader.php';

Заменить

require_once 'Zend/Cache/Exception.php';

на:

require_once 'Zend2/Cache/Exception.php';

5. \classes\lib\external\DklabCache\Zend2\Cache\Backend.php

Заменить:

require_once 'Zend/Loader.php';

на:

require_once 'Zend2/Loader.php';

6. \classes\lib\external\DklabCache\Zend2\Cache\Exception.php

Заменить:

require_once 'Zend/Exception.php';

на:

require_once 'Zend2/Exception.php';

7. \classes\lib\external\DklabCache\Zend2\Cache\Backend\File.php

Заменить:

require_once 'Zend/Cache/Backend/Interface.php';

на:

require_once 'Zend2/Cache/Backend/Interface.php';

Заменить:

require_once 'Zend/Cache/Backend.php';

на:

require_once 'Zend2/Cache/Backend.php';

8. \classes\lib\external\DklabCache\Zend2\Cache\Backend\Memcached.php

Заменить:

require_once 'Zend/Cache/Backend/Interface.php';

на:

require_once 'Zend2/Cache/Backend/Interface.php';

Заменить:

require_once 'Zend/Cache/Backend.php';

на:

require_once 'Zend2/Cache/Backend.php';
avatar
Вот, ну наконец )) Спасибо тебе большое! Сейчас попробую.
avatar
Отлично! Работает )
avatar
а в чем смысл править пути к папке Zend с последующей заменой на Zend2?
без это что ли работать не будет?
avatar
Присоединяюсь к вопросу.
avatar
Fatal error: Uncaught exception 'Zend_Cache_Exception' with message 'cache_dir must be a directory' in /home/k/ki/kinomobila-ru.tut.su/public_html/classes/lib/external/DklabCache/Zend2/Cache.php:141 Stack trace: #0 /home/k/ki/kinomobila-ru.tut.su/public_html/classes/lib/external/DklabCache/Zend2/Cache/Backend/File.php(146): Zend_Cache::throwException('cache_dir must ...') #1 /home/k/ki/kinomobila-ru.tut.su/public_html/classes/lib/external/DklabCache/Zend2/Cache/Backend/File.php(121): Zend_Cache_Backend_File->setCacheDir('/var/lib/php/se...') #2 /home/k/ki/kinomobila-ru.tut.su/public_html/classes/modules/sys_cache/Cache.class.php(71): Zend_Cache_Backend_File->__construct(Array) #3 /home/k/ki/kinomobila-ru.tut.su/public_html/classes/engine/Engine.class.php(68): Cache->Init() #4 /home/k/ki/kinomobila-ru.tut.su/public_html/classes/engine/Router.class.php(95): Engine->InitModules() #5 /home/k/ki/kinomobila-ru.tut.su/public_html/index.php(31): Router->Exec() #6 {main} thrown in /home/k/ki/kinomobila-ru.tut.su/public_html/classes/lib/external/DklabCache/Zend2/Cache.php on line 141
avatar
Вобщем столкнулся с проблемой.
все тот же хост sweb.
Проблема в том, что я не знаю где хранистся мой кеш. В конфиге указал папку tpl, прописал полный путь. А папка tpl пустая. Права на ней 777.
В чем может быть проблема?
  • _et
  • 0
avatar
на MCHOST такая же проблема :((((
avatar
На бестхостере тож танцевать с кешем пришлось… какойто совсем не ливстрит не дружелюбный к хостингу стал… первое двигло не вставшее на бестхостера… хатя я к нему с петерхоста ухал ибо у петеров ваще ничего не ставилось без плясок
avatar
ыыыыы
Рассказываю как я обошел эту ошибку ничего не правя )))
Была такая ошибка как и у всех, но правка ничего не дала.
Залил по новой. Настроил БД. Ошибка есть. В конфиге отключил кеширование. Зашел на сайт. Побегал по нему, кеш не собирался. Невыходя с сайта, включил кеш в конфиге. Попробовал перейти по вкладкам. Ошибка не выскакивает, кеш собирается.
Попробуйте, может кому и поможет ))
avatar
А потом кеш удалился и у пользователей стала ошибка вываливаться, наверное. :)
avatar
Ну не знаю, не знаю. У меня пока все работает.
Бывает выскакивает какая-то ошибка. Но это не кеш. Пока не исправлял. Как-то на меня она еще не попадал.

Да и вообще заметил, что движок сыроватый, много багов. Зато быстрый )))).
avatar
Если у столь многих пользователей проблема с кешем — может как-то можно это сразу в SVN исправить? Чтобы каждый не правил самостоятельно.
avatar
Дабы не плодить много тем — задам вопрос тут. Не ругайте если непрофессионально буду изъясняться.

Итак, перешел на VDS, полностью рабочий сайт (кеширование и сессии работали, по данной статье). На новом серваке кеширование вроде как пашет (запись временных файлов идет в указанную папку), но сессии постоянно слетают и всем приходится многократно логиниться заново. В чем может быть дело? Настройки сервака? Какие-то службы запустить? Я во многих этих вопросах пока что не силен. Подскажите если кто сталкивался с подобным.

И второй вопрос — использую file тип кеширования. А это постоянно разрастающийся файл-треш. Что не есть гуд. Вот забуду как нить про это добро и пиши пропало =) Чем данным тип кеширования лучше/хуже типа memory и как его (memory) запустить, ибо простой сменой параметра ничего не выходит, выдает ошибку, схожую с описанными выше.

Но основной вопрос все таки про слетающие сессии :)

Спасибо.
avatar
g3n0m, не разобрались, как врубить этот мэмкэш?!
avatar
Нет, сижу на file. Запускаю через cron скрипт на еженедельную чистку кеш-мусорки что бы не захламило :) А вообще интересно узнать про преимущества мемкеша. Если плюсы явные светят — буду разбираться и переходить на него
avatar
В этой теме говорят, что memcache решает, вроде)) А то у меня неахти параметры:
* Работа с БД:
* Запросов: 16
* Время: 0,218 с.

* Работа с кэшем:
* Запросов: 19 из них
* — записей: 8
* — прочтений: 10
* Время: 0,50011 с.

* PHP:
* Время загрузки модулей: 0,533 с.
* Общее время загрузки страницы: 2,267 с.


Народу при том в онлайне ну от силы 5-7 человек(
avatar
Да на самом деле такая же проблема у меня :) Ок, спасибо за ссылку, буду вникать — кто первый докапывается до истины — делится с остальными!
avatar
Мемкеш поставил, разобрался. Все просто. Если нужен будет совет — пиши в личку.
avatar
У меня дня кэша достаточно было прописать SYS_CACHE_DIR. Картинки попрежнему не загружаются. Правка Zend на Zend2 актуальна только для кэша или для картинок тоже?
avatar
Все сделал по приведенному выше рецепту, кэш включился, но теперь вот такая фигня в шапке вылезает:
Notice: unserialize() [function.unserialize]: Argument is not a string in /var/www/user_0000414841/data/www/expcom.ru/classes/modules/sys_cache/Cache.class.php on line 105

На что он ругается?
avatar
вот содержимое 105й строчки:
return unserialize($this->oBackendCache->load($sName));
avatar
Всем спасибо за внимание :)))
сам нашел решение проблемы trac.assembla.com/livestreet/changeset/354
avatar
Все сделал точно так же, но:

Fatal error: Uncaught exception 'Zend_Cache_Exception' with message 'cache_dir is not writable' in /home/.../public_html/classes/lib/external/DklabCache/Zend2/Cache.php:141 Stack trace: #0 /home/.../public_html/classes/lib/external/DklabCache/Zend2/Cache/Backend/File.php(149): Zend_Cache::throwException('cache_dir is no...') #1 /home/.../public_html/classes/lib/external/DklabCache/Zend2/Cache/Backend/File.php(121): Zend_Cache_Backend_File->setCacheDir('/') #2 /home/.../public_html/classes/modules/sys_cache/Cache.class.php(71): Zend_Cache_Backend_File->__construct(Array) #3 /home/.../classes/engine/Engine.class.php(68): LsCache->Init() #4 /home/.../public_html/classes/engine/Router.class.php(99): Engine->InitModules() #5 /home/.../public_html/index.php(31): Router->Exec() #6 {main} thrown in /home/.../public_html/classes/lib/external/DklabCache/Zend2/Cache.php on line 141
avatar
Папка cache_dir не доступна для записи.
avatar
Речь идёт о виртуальном хостинге на sweb или же VDS?
  • Sky
  • 0
avatar
у меня такая проблема появилась
Notice: unserialize() [function.unserialize]: Argument is not a string in /var/www/html/site.ru/classes/modules/sys_cache/Cache.class.php on line 105
кеш работает. когда обновишь страницу несколько раз то все нормально
  • kep
  • 0
avatar
оп уже нашол в чем проблема
  • kep
  • 0
avatar
сделал как trac.assembla.com/livestreet/changeset/354
но Notice: Undefined property: LsCache::$data in /var/www/html/site.ru/classes/modules/sys_cache/Cache.class.php on line 109
  • kep
  • 0
avatar
видимо неправильно внес изменения в файл Cache.class.php
avatar
Прошу прощения, но зачем такой геморой… вот решение… правда проблемма возникла из за имаджей но думаю это для всех… копипаст моего же коммента из другой ветки:
господа, спешу вас уверить данная проблема решается очень просто, да действительно все дело в кеше, лечиться следующим образом:
1) в корне создаем каталог, например tmp и даем на него права 777
2) идем в файл config.php и ищем следующее
define('SYS_CACHE_DIR',$sTmpDir.'/'); // каталог для файлового кеша, также используется для временных картинок. По умолчанию подставляем каталог для хранения сессий

копируем и перед данной фразой ставим две косые //
3)далее добавляем эту же фразу следом за тем что мы закомментировали и правим ее в таком виде
define('SYS_CACHE_DIR',DIR_SERVER_ROOT.'/tmp/'); // каталог для файлового кеша, также используется для временных картинок. По умолчанию подставляем каталог для хранения сессий

4) поднимаемся чуть выше и находим вот это
define('SYS_CACHE_USE',false); // использовать кеширование или нет

собственно меняем false на true и сохраняем файл… все картинки грузятся хоть через урл хоть из ФС.
Удачного использования лайвстрита.
avatar
спасибо, работает!
avatar
Подскажите, как быть с указанной проблемой в версии 0.4? Папки /classes/lib/ — нет.
avatar
Как я понимаю, нужно попросить хостера ZendFramework отключить, но я не уверен, опишите проблему хостеру
avatar
Версия 4, переехал на другой хостинг, появилась такая же проблема.
ZendFramework отключить нельзя, т.к. он требуется для других моих сайтов.
Помогите, пожалуйста, решить проблему.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.