Использование кэширования. Memcached в действии

24 марта 2012

Я уже публиковал небольшую замету о том, как установить демон Memcached на локальной машине под управлением ОС Windows. Судя по комментариям (еще в старом блоге), информация оказалась достаточно актуальной, и я решил написать еще одну заметку. На этот раз я постараюсь описать базовые принципы кэширования на примере работы с Memcached.

Для эффективного использования кэширующего механизма, необходимо хотя бы немного понимать принципы его работы. Это позволит предупредить возникновение весьма распространенных вопросов.

И так, хранилище Memcached — это хэш-таблица в оперативной памяти. Данные хранятся по модели ключ — значение. То есть, каждая единица данных, которую мы кладем в кэш, записывается с привязкой к конкретному ключу, по этому же ключу данные могут быть получены из хранилища. В отличии от реляционных баз данных, здесь нет никаких автоинкрементов, поэтому уникальность ключей мы отслеживаем самостоятельно.

Читать далее »

Использование функций isset() и array_key_exists()

29 февраля 2012

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

Еще больше меня «порадовали» комментарии одного «незнакомого» знакомого, который удивился моему негодованию. Как оказалось, о существовании функции array_key_exists() он что-то слышал, но сам никогда ею не пользовался. Более того, где-то читал, что ее лучше заменять на isset(), так как последняя работает быстрее.

Собственно, об уровне квалификации PHP программистов сказано немало и добавить к этому нечего.

Читать далее »

Документирование PHP кода. DocBlock комментарии

19 февраля 2012

Хочу рассмотреть принцип документирования программного PHP кода, основанный на DocBlock (DocBlock comments). Многие называют его стандартом, хотя каких-то авторитетных источников, подтверждающих это, я не нашел. Тем не менее, данный формат комментариев распространен во многих языка. Насколько я понимаю, пришел он из Java и по своему принципу наследует Javadoc. Он прекрасно поддерживается и интерпретируется средами разработки. Также существует немало решений, позволяющих автоматически генерировать документацию на основе таких комментариев.

DocBlock – это многострочный комментарий, требующий соблюдения определенного синтаксиса. В PHP данный способ более известен под другим именем – phpDoc. Оно происходит от названия утилиты phpDocumentor, предоставляющей возможность создавать страницы документации автоматически. Результат ее работы очень похож на официальную документацию PHP.

О пользе написания комментариев написано немало. Обычно призывы основаны на необходимости заботиться о тех, кому придется работать с вашим кодом в дальнейшем. Безусловно, я с этим согласен, но считаю это очень плохой мотивацией. Люди эгоистичны и зачастую действуют только в своих собственных интересах, что совершенно нормально.

Я хочу привести ряд аргументов, которые, возможно, смогут убедить в том, что хороший комментарий несет пользу прежде всего нам самим. phpDoc блоки позволяют увеличить не только читаемость существующего кода, но и ускорят написание нового за счет использования возможностей IDE.

Читать далее »

Memcached + PHP под Windows

19 февраля 2012

Имеются две основные проблемы, которые заставили меня написать эту заметку. Обе они упираются в крайне малую распространенность актуальных и рабочих версий вполне экзотических библиотек, собранных под ОС Windows.

  • Днем с огнем не найти php_memcache.dll
  • Даже если мы нашли php_memcache.dll, нам осталось немало сил приложить к поиску работающего с ним Memcached.

Библиотеку php_memcache.dll я нашел в pecl версии 5.2.6-Win32. И, судя по всему, это последняя существующая версия pecl для Windows, во всяком случае, более поздних я не видел. Конечно, все это не проблема, если есть желание/время/возможность собрать библиотеку из исходников, но не об этом речь.

Библиотекой для PHP мы обзавелись (ссылки на скачивание в конце статьи), осталось скачать сам демон. На момент написания статьи (31.05.09), из стабильных версий для скачивания доступна 1.2.8. Но данная версия конфликтует с имеющимся php_memcache.dll. На винчестере была более ранняя версия демона, а именно 1.2.1. Версия, конечно, старовата и, если почитать change-log, многого лишена, но для отладки должно хватить. Опять же, если не хватит, то вперед и с песней идем компилировать библиотеку для PHP.

Читать далее »