Посты с тегом ‘php’

И еще один забавный случай про то, как мы наткнулись на баг, но теперь уже в самом memcached. Это даже, наверное, не баг, а особенность, не упомянутая в документации.

Всем известно, что у memcached есть текстовый протокол. Можно на tcp порт memcached (11211 по умолчанию) зайти телнетом и написать парочку команд. И есть в протоколе команда stats cachedump, которая не документирована, но которой пользуется утилита memcached-tool, входящая в поставку memcached.

Usage: memcached-tool <host[:port]> [mode]
(далее…)

В продолжении разговора о патче в php хочется еще рассказать о наших небольших патчах в pecl-memcached. Это pecl модуль, который реализует интерфейс libmemcached в php и добавляет handler сессий для хранения их в memcached.

Первый патч довольно простой, он добавляет нормальные сообщения об ошибках в код handler-а сессий. До этого патча невозможно было понять, то-ли сессии в мемкеше нет, то-ли отвалилась коннекция от мемкеша, то-ли что-то еще произошло. Во всех случаях код возвращал FAILURE и было непонятно, что на самом деле произошло. Аналогично, при сохранении сессии старый код просто увеличивал количество неудачных попыток и при достижении максимума выкидывал сервер из пула по непонятным снаружи причинам.
(далее…)

16 марта вышли новые версии php — 7.0.17 и 7.1.3. Это приятная новость для многих php разработчиков, но для нас она приятна еще и тем, что туда вошел наш патч, который чинит keep-alive соединения в php-fpm sapi.

Php-fpm появился сначала как отдельный патч для php 5.2, добавляющий менеджер fastcgi процессов, который позволяет организовать отдельные пулы, следит за временами выполнений рабочих процессов и много другое полезное. В ветке php 5.4 его приняли как официальный sapi и мы избавились от необходимости накладывать этот патч всякий раз, как выходит новая версия php с исправлением ошибок.

(далее…)

Недавно меня попросили сравнить провести тесты шаблонизатора для используемого нами фреймворка Grails. Зачем такие тесты нужны и что они, собственно, скажут о производительности приложения — не знаю. Однако это весело и народ такие тесты очень любит.

Собственно, у Grails никакого шаблонизатора нет, а есть язык Groovy, который можно использовать внутри серверных страничек (GSP — Groovy Server Pages). Итак, хотим измерить производительность языка Groovy. В качестве базовой точки отсчета используется язык PHP.

(далее…)