Monthly Archives: July 2010
Хранение PHP сессий в memcached: испытание на production сервере
Сегодня на работе выкатили свежую версию проекта на production-сервер. Посмотрели, потестили под одним юзером, всё нормально. Но потом наштестировщик, обнаружил, что постоянно начали отваливаться сессии, часто происходила подмена сессий, т.е. когда человек логиниться, то в его сессии лежат данные другого пользователя, а именно того, кто залогинился ранее.
Eventr.com как смесь веб-технологий
Недавно состоялся запуск проекта Evantr.com. Коротко скажу, что по функционалу это социальный RSS-ридер, гибрид twitter и GoogleReader. Кстати, очень занятная получилась штука. Можно импортировать RSS к себе в ленту, добавлять в неё ленты друзей, и удобно читать всё это дело. Чем мне сразу понравился проект, так это тем, что разработчики не пытаются объять необъятное, а делают небольшой функционал, но зато на отлично. Из минусов я бы выделил то, что нельзя получить RSS-поток своей ленты.
PHP for Android
Анонсирован проект “PHP for Android” в рамках которого представлена система для выполнения на платформе Android приложений, написанных на языке PHP. В настоящий момент для телефонов на базе платформы Android подготовлен установочный APK-файл, интегрирующий поддержку PHP 5.3 в созданную разработчиками Google подсистему Android Scripting Environment (ASE). Исходные тексты разработки распространяются в рамках лицензии Apache.
PHP-скрипты могут выполняться в окружении Android из командной строки, функционировать как фоновые процессы или выступать в роли обычных GUI приложений.
Работа с MySQL кластером в Doctrine
В этой статье я хочу рассказать, как настроить Doctrine таким образом, чтобы использовать master-сервера для записи, а slave-сервера для чтения данных. Эта стратегия позволит добиться распределения нагрузки между серверами БД. Речь идет именно о нескольких серверах, на которых реплицируются базы, а не о ndbcluster, как некоторые могли бы подумать.
Итак, сначала мы должны сконфигурировать все дсотупные соединения в Doctrine.
1 2 3 4 5 6 7 8 9 10 11 |
$connections = array( 'master' => 'mysql://root:@master/dbname', 'slave_1' => 'mysql://root:@slave1/dbname', 'slave_2' => 'mysql://root:@slave2/dbname', 'slave_3' => 'mysql://root:@slave3/dbname', 'slave_4' => 'mysql://root:@slave4/dbname' ); foreach ($connections as $name => $dsn) { Doctrine_Manager::connection($dsn, $name); } |
Теперь, когда у нас есть один master-сервер, и 4 slave-сервера мы можем переписать классы Doctrine_Record и Doctrine_Query для добавления логики по разделению запросов для чтения и для записи.
Тормоза при коннектах к MySQL на другом сервере
У сайта вдруг начали появляться тормоза. Скрипт отарбатывал больше 10 секунд. Начали с коллегами копать и выяснили, что очень большое время занимает коннект к серверу БД. По 5 секунд на коннект, два коннекта = 10 секунд.
Оказывается, это виноват резолв имен. Чтобы решить проблему прописали хосты с которых идут коннекты в /etc/hosts сервера БД, и стали запускать mysqld с параметром –skip-name-resolve
После этого время работы сократилось на порядок.
Подробнее о резолве в MySQL можно прочитать здесь:
eAccelerator и php Reflection
Оказывается метод ReflectionClass::getDocComment() выдает пустой массив, когда включен eAccelerator.
Сам баг: http://eaccelerator.net/ticket/229
А решение простое, сконфигурировать его с параметром –with-eaccelerator-doc-comment-inclusion
Исходники алгоритма шифрования Skype
Один из алгоритмов шифрования Skype раскрыт.
Восстановление с Acer eRecovery
Попал тут недавно ко мне ноутбук, на котором сломалась Ось . Ноутбук был Acer и была там волшебная Acer eRecovery. Я понадеялся на то, что быстренько восстановлю ось. Но не тут то было. По Alt+F10 я загрузился со скрытого раздела, и вроде бы процесс пошел. Восстановил Windows на раздел Acer, перезагрузился, и всё. Система не грузится. В результате долгих разборок выяснилось следующее.
- Acer eRecovery восстанавливает систему строго на первый (ну на самом деле на второй после скрытого) раздел.
Английский язык интерфейса в NetBeans 6.8
Установил себе NetBeans 6.8 По -умолчанию она встала с русским языком. Ничего не понял, перевод – просто кошмар. Решил сменить язык. Казалось бы, зайди в настройки да и меняй, ан нет. Всё облазил ничего нет.
Полазил по сети, нашел всё-таки, как сменить язык. Для этого надо запустить NetBeans с параметром локали:
–locale en:US
Аналогично для других языков.