DbHelp.ru
Маленький Yii блог
Комментарии
Гость: Всем доброго дня! преобразователь характеризуется высокой нагрузки постоянен сила инерции с наш...
Гость: None knows when he or she can have some situations in life when cash will solve the issue. If you ne...
Гость: https://siteko.online/moskva-rostokino-kupit-zakladku-molly-mdma-hq.html Мощные | Семен...
Гость: [url=http://mewkid.net/when-is-xicix/]Amoxicillin[/url] Amoxicillin 500mg Capsules owg.dcxl.dbhelp.r...
Гость: [url=http://mewkid.net/when-is-xicix/]Buy Amoxicillin[/url] Amoxicillin 500mg Capsules wdf.jtjz.dbhe...



Сервер Ultima Online - Forest Wars (от создателя данного блога)

MemCache и ZendServer

Рубрика: Разбор багов и ошибок

Оцените эту статью:

Рейтинг: 0.00 (0)
5 апр. 2009
Опубликовать в Twitter Написать в Facebook Опубликовать в своем блоге livejournal.com

Yii Framework Blog img http://dbhelp.ruzendserver2 Надо было мне поэксперементировать с кешем в Yii. Нашел справку как что подключать и сразу приступил к делу. Работал я тогда на своём домашнем компьютере поэтому Yii поднимал на Zend Server-е.

---

Проблема вот в чем. Пытаюсь подключить кеш, все по человечески делаю. Захожу в конфиг и добавляю:

        'cache'=>array(
'class'=>'system.caching.CMemCache',
),

конечно можно указать перечень серверов и тп - но это не обязательно. по умолчанию коннект будет к localhost по порту 11211.

После этого обновляю экран своего приложения - и вуаля, ничего больше не работает. Перед собой я вижу абсолютно белый экран и некаких сообщений об ошибке.

Лезу в логи ZendServer-а и вижу интересное сообщение:

    * PHP Error:
Call to undefined method Memcache::addServer()

Мол метод addServer не найден. Поискав в php.net (http://ua2.php.net/manual/ru/function.memcache-addserver.php) я понял что никакой ошибки нет и данный метод существует.

Поэтому пришлось капать глубже. А именно в framework/caching/CMemCache.php именно в этом файле вызывается данный метод.

   public function init()
{
parent::init();
if(!extension_loaded('memcache'))
throw new CException(Yii::t('yii','CMemCache requires PHP memcache extension to be loaded.'));

$servers=$this->getServers();
$cache=$this->getMemCache();

if(count($servers))
{
foreach($servers as $server)
{
$cache->addServer($server->host,$server->port,$server->persistent,
$server->weight,$server->timeout,$server->status);
}
}
else
$cache->addServer('localhost',11211);
}

Как видим ничего замысловатого. Сначало проверяется подключен ли у нас memcache. Если нет - получаем исключение с ошибкой на экран, если нет - идет проверка. Проверяет заполнено ли поле серверов в конфиге, если нет - подставляет значение по умолчанию и выполняет:

$cache->addServer('localhost',11211);

Вот оно проблемное место. С первого взгляда все окей, вот только чего ж оно вылетает. Решение пришло в голову после чашки чая. Оказывается что метод addServer добавился в memcache только со второй ветки (2.0.1) о чем нам говорит ченж лог - http://pecl.php.net/package-changelog.php?package=memcache

А в ZendServer-е последней версии почему то не установлено. В моё удивление там вообще установлена первая версия! (1.0.0) которая хрен знает на сколько устарела. 

Мое решение вот такое:

   public function init()
{
parent::init();
if(!extension_loaded('memcache'))
throw new CException(Yii::t('yii','CMemCache requires PHP memcache extension to be loaded.'));

$servers=$this->getServers();
$cache=$this->getMemCache();

if(count($servers))
{
// если мы используем несколько серверов - уведомляем что надо обновить
// либсу memcache до версии 2.0.1
if (!method_exists($cache, 'addServer'))
throw new CException(Yii::t('yii','Update you memcache to 2.0.1 version. Method addServer not found.'));

foreach($servers as $server)
{
$cache->addServer($server->host,$server->port,$server->persistent,
$server->weight,$server->timeout,$server->status);
}
} else {
// т.к. сервер один - нет смысла создавать очередь. поэтому что б
// всё заработало - меняем addServer на connect
$cache->connect('localhost',11211);
}
}

Если в конфиге обнаружено много кеш серверов для использования, а библиотека нам не позволяет использовать addServer - тогда на экран исключение с просьбой обновить либсу. Если в конфиге не указанно не одного сервера - значит нет смысла использовать addServer для localhost, и делаем просто connect.

Для тех кто собирается использовать много кеш-серверов и ZendServer - лучше обновить либсу до 2.0.1 хотя бы. Для тех кому достаточно кеш сервера localhost - тогда можем и не обновлять.



Если хотите опубликовать этот материал у себя - пожалуйста, разместите ссылку на страницу откуда вы его взяли.
Другие yii статьи:

  1. Сегодня Sam Dark порадовал нас авторским рецептом на тему RBAC. Документация Yii про RBAC говорит нам совсем немного, поэтому иметь ... "RBAC и описание ролей в файле"

  2. Многие интересуются вопросами по интеграции всевозможных визуальных редакторов на свой сайт. Сегодня мы поговорим о том, как интегрировать CKEditor ... "Подключаем CKEditor"

  3. Хочу вас обрадовать выходном новой версии замечательного Yii фреймворка. Данный релиз был немного задержан посравнению с обычным графиком, но ... "Yii Framework 1.0.5"

[guest] idle sign

Было сказано: Понедельник, 13 июля 2009

«Нашол» в первом абзаце на самом деле — «нашел».

[adm] zolter

Было сказано: Понедельник, 13 июля 2009

Спасибо.

Если не трудно используйте в будущем Ctrl+Enter для выделения ошибок.

[guest] Гость

Было сказано: Суббота, 08 декабря 2018

Однако больше и больше аккаунтов начинают активно продвигаться в Instagram.
Между наших клиентов закусить сиречь стилисты ,
беспричинно и люди, занимающиеся продажей женской одежды.
В связи с этим дозволительно смело говорить, что большинство бизнесов подходит ради улучшения в Instagram бизнесов.

ТУТ <a href=http://instagram99.ru>раскрутка в Инстаграм</a>

Наша проблема - привлечь в ваш Instagram страниц токмо целевых подписчиков,
заинтересованных в вашем продукте, так чистый лишь такой подход
позволит вам стяжать заявки и продажи из Instagram аккаунтов.
Поэтому мы максимально качественно прорабатываем этот вопрос.
При улучшения в Instagram бизнесов мы составляем портрет вашей целевой аудитории,
выявляем "места ее обитания" и начинаем контактировать с ней присутствие помощи массфолловинга и лайков, ради которыми следит ваша целевая клиенты и т.д.
Все это позволяет нашим клиентам стяжать лишь живых подписчиков, реально заинтересованных в их продукте.
http://instagram99.ru - Продвижение бизнеса в Инстаграм

[guest] Гость

Было сказано: Суббота, 29 декабря 2018

Раскрутка и Разработка сайта в Гугл быстро
Из-за влияния результатов поиска на ваши веб-порталов мы предлагаем несколько факторов, которые полностью продвигают ваш сайт. Лучшие веб-сайт может быть разработан Разработка как профессиональный веб-магазинов, но если у вас нет кого-то другого, вам придется потратить деньги на создание источника в Интернете.
Более 350 организаций в России стали нашими партнерами. Мы наняли более 34 отличных специалистов для разработка нашего порталов и посвятили себя достижению наилучших результатов. Цель: стать лидером в онлайн-маркетинге областях. Миссия: Развивайте свои возможности, расширяя свой бизнес и своих жертва, быстро всходить Самые услуги на рынке онлайн-маркетинга. Почему я: агентство не назначаем пустую встречу. Следовательно Если это словосочетаний, мы несем ответственность за успехов Вконтакте.
<a href=http://prodvizhenie-caitov-moskva.ru/>раскрутка сайта цены</a>
клиент могут быть приобретены у вашего оператора. Если вы идете в Вконтакте, которая хочет предоставлять определенную сумму дохода топах аналитика, вам не нужно беспокоиться о прозябать ваших онлайн-магазинов в будущем усилий. Если мы хотим раскрутка на нашем сайтов, мы предоставим положительные результаты для всей работы, выполненной в оговоренные сроки.
Следовательно Контекстная реклама - Цена это один из самых быстрых способов продвижением трафика ваших жертва и лучших страниц веб запросов. Вы можете усилением свой порталов, перепродавая и запрашивая напрямую у Яндекс, Google AdWords, Instagram, MailRu.
купить разработка и обслуживание магазинов Москва http://prodvizhenie-caitov-moskva.ru/ - КЛИКАЙ

[guest] Гость

Было сказано: Четверг, 03 января 2019

Агентство - Первое маркетинговое агентство в Москве создает магазинов чтобы SEO деятельности. Общество была создана в 1994 году компанией Web Studio. Мы готовим профессиональные район в Москве чтобы работы в разных регионах России. Немедленно разработаем отраслевые ожидание поведенческих факторов, прогнозы трафика, аналитика и семантический анализ. Мы создали профессиональные веб- магазинов, онлайн-акции, без ссылочных бюджетов, методы черного или серого маркетинга, с правильной технологией, оптимизацией качества запросов и идеальной технологией для интернет-проектов, маркетинга и структуры людей Instagram, Вконтакте. Вы должны одобрять каждую деталь. Мы выводом такой магазинов. Вы не должны направляться на компромисс полностью низкая цена.
Купить сей страниц веб продвигает избыток ключевых слов и выводов из ТОП-5 поисковых систем Яндекса и Google. Например, если жертва в «Веб-студии Москва» впервые запрашивает развертывание веб-сайтов низкая цена
<a href=http://prodvizhenie-caitov-moskva.ru/>Продвижение сайта в топ Яндекса</a>
Это работа всех направлений, поисковой системы и социального маркетинга. Создавайте хорошие аналитика и изображения в Интернете, а также в запросов, порталах и форумах MailRu, Вконтакте..
Продвигайте особенный сайтов с помощью различных методов белого маркетинга, включая контекстную рекламу. Если вы выберете эту проекта, вы будете уплачивать сообразно приложению, которое вы получили, иначе сообразно телефону Вконтакте, MailRu дешево.
Мы считаем, который сила Интернета может помочь вам развить особенный бизнес. Никто не сомневается в том, который Интернет является бесконечным и мощным средством коммуникации и огромной маркетинговой платформой словосочетаний, а решения в области безопасности, точный, доставят бизнес новым и существующим клиентам.
купить разработку и обслуживание магазинов Москва http://prodvizhenie-caitov-moskva.ru/ - здесь!

Оставить комментарий


Код:
Имя: