Posts Tagged ‘memcached’

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

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

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

Share

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

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

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

Share

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

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

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

Share

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

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

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

Share

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

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

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

(далее…)

Share

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

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

Сколько грузится ваш движок? Я имею в виду число врмя генерации скрипта? 0,5 0,6 или может быть аж целую секунду? :-) Наш вот срабатывает за 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, т.к. исследование показало прирост скорости. (далее…)

Share

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

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

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

(далее…)

Share

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

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

Share