Posts Tagged ‘memcached’

Гейзенбаг: коды возврата при использовании Memcached+Nginx

// Сентябрь 2nd, 2011 // No Comments » // Memcached, PHP, Zend Framework, Веб-разработка

Doctrine memcachedНа этой неделе в нашей тикет-системе был совершенно изумительный гейзенбаг. При запросе  определённой страницы, на которой расположен уже удалённый объект было необходимо выдавать код 404. Однако в произвольные моменты времени там выдавался код 200. (далее…)

Doctrine memcached

Карта сайта для поисковиков (Sitemap) в Zend Framework приложении

// Август 24th, 2011 // 2 Comments » // SEO, Zend Framework

Doctrine memcachedПо работе занимаюсь созданием довольно большого портала. Не люблю я это слово, но оно наиболее полно отражает суть веб-сервиса. На этой неделе встала задача генерации sitemap файла для поисковиков. Всё бы ничего но по примерным подсчётам на сайте никак не меньше 3 000 000 страниц, которые надо скормить роботу. Ввиду такого количества поисковик просто не индексирует их все, упираясь в свой лимит. Собственно поэтому и нужен sitemap. (далее…)

Doctrine memcached

Уральский вебдев. Конференция Dump в Екатеринбурге. Фотоотчёт.

// Май 31st, 2011 // 1 Comment » // Highload, IT конференции, Memcached, MySQL, NoSQL, PHP, Sphinx

Doctrine memcached30 мая в Екатеринбурге прошла уральская конференция веб-разработчиков «Development Usability Management Practice» (Dump), которую мне удалось посетить. Основных направлений два, как следует из названия, — это веб-разработки и менеджмент IT технологий. (далее…)

Doctrine memcached

MySQL 5.6.2 Теперь ещё и Memcached интерфейс!

// Апрель 13th, 2011 // 2 Comments » // Highload, Memcached, MySQL

Doctrine memcachedDoctrine memcachedСегодня хочу рассказать вам отличную новость! Вышла новая экспериментальная версия MySQL 5.2.6 которая получила memcached интерфейс к InnoDB. Что же это значит? (далее…)

Share

Автосжатие в php-memcached после 20 000 символов при выключенном сжатии

// Январь 14th, 2011 // 3 Comments » // Memcached, PHP

Doctrine memcachedПосле переезда на новый сервер, мы запустили сайт. Грузился он конечно очень быстро, но хотелось ещё быстрее. Посмотрели, а у нас выключено страничное кэширование. После включения начал вылезать мистический баг…

(далее…)

Doctrine memcached

Интеграция Zend_Cache_Frontend_Page, Nginx и Memcached или 1000 запросов в секунду

// Декабрь 13th, 2010 // 2 Comments » // Highload, Memcached, PHP, Zend Framework

Doctrine memcachedСколько грузится ваш движок? Я имею в виду число врмя генерации скрипта? 0,5 0,6 или может быть аж целую секунду? Doctrine memcached Наш вот срабатывает за 0,8. После последних оптимизаций (см. предыдущие статьи) стал отрабатывать за 0,5. Это примерно 2 запроса в секунду. Хотите раскажу, как довести это число до 1000*?

(далее…)

Share

Подключение PHP-FPM и Memcached к Nginx

// Ноябрь 26th, 2010 // 7 Comments » // Highload, Memcached, PHP, Веб-разработка

На продакшен сервере у нас связка Nginx (отдает статику) + Apache (отдает динамику) + mod_php. Задумали отказаться от Apache, а заодно и подключить PHP в режиме FastCGI с помощью php-fpm, т.к. исследование показало прирост скорости. (далее…)

Doctrine memcached

Хранение PHP сессий в memcached: испытание на production сервере

// Июль 22nd, 2010 // 3 Comments » // Memcached, PHP, Zend Framework

Doctrine memcachedСегодня на работе выкатили свежую версию проекта на production-сервер. Посмотрели, потестили под одним юзером, всё нормально. Но потом наштестировщик, обнаружил, что постоянно начали отваливаться сессии, часто происходила подмена сессий, т.е. когда человек логиниться, то в его сессии лежат данные другого пользователя, а именно того, кто залогинился ранее.

(далее…)

Doctrine memcached

Eventr.com как смесь веб-технологий

// Июль 21st, 2010 // No Comments » // MySQL, PHP, Zend Framework

Недавно состоялся запуск проекта Evantr.com. Коротко скажу, что по функционалу это социальный RSS-ридер, гибрид twitter и GoogleReader. Кстати, очень занятная получилась штука. Можно импортировать RSS к себе в ленту, добавлять в неё ленты друзей, и удобно читать всё это дело. Чем мне сразу понравился проект, так это тем, что разработчики не пытаются объять необъятное, а делают небольшой функционал, но зато на отлично. Из минусов я бы выделил то, что нельзя получить RSS-поток своей ленты. (оказывается можно).А ведь было бы здорово импортировать её к себе на сайт например, благо WordPress’овский плагин LifeStream это поддерживает. Даже внес предложение через Reformal, посмотрим, что будет.

(далее…)

Share

Сессии в memcached с Zend Framework

// Июнь 30th, 2010 // 7 Comments » // Memcached, Zend Framework

Столкнулся тут с очень странным багом. У нас в проекте реализовано централизованное хранение сессий. Т.е. разные бекэнды хранят сессии в одном месте. Это позволяет автоматически «узнавать» пользователя, вне зависимости от того с какого фронт-энда пришел запрос.
При выключенном кэше сессии хранятся в БД MySQL, при включенном в Memcached. И вот тут то и начались глюки. У нас есть основной движок на ZF, и утилитка на PHP. Утилитке надо производить авторизацию пользователя, а для этого подключаться к memcache и устанавливать session_save_handler().

Вроде делал всё как надо, но получал ошибку:

Zend_Session_Exception: Zend_Session::start() - /vendors/Zend/Cache
/Core.php(Line:310): Error #8 unserialize(): Error at offset 0 of 929 bytes Array in //vendors
/Zend/Session.php on line 493 Call Stack: 0.0006 665616 1. {main}() /utils/session.php:0 0.0464
 2973824 2. Zend_Session::start() /utils/session.php:49

После этого сессия убивалась, и в основной системе юзера выкидывало.

Solution

А оказалось всё банально просто. Во-первых надо было устанавливать в утилите такие же переменные окружения для memcache, как и в дивжке:

resources.cachemanager.backend.memcached.ini.allow_failover = 1
resources.cachemanager.backend.memcached.ini.max_failover_attempts  = 20
resources.cachemanager.backend.memcached.ini.chunk_size             = 8192
resources.cachemanager.backend.memcached.ini.hash_strategy          = "standard"
resources.cachemanager.backend.memcached.ini.hash_function          = "crc32"

С помошью кода:

$iniSets = $options['bootstrap']['resources']['cachemanager']['backend']['memcached']['ini'];
foreach ($iniSets as $name => $value) {
    ini_set('memcache.'.$name, $value);
}

Во-вторых, надо было отключить автоматическую сериализацию.

 resources.cachemanager.frontend.block.options.automatic_serialization = false

После этого сессия стала открываться как в основной системе, так и в утилите.

Doctrine memcached