Ошибки или плановые мероприятия зачастую требуют чтобы некоторое время пользователи не трогали сайт, над которым измывается релиз-менеджер (ну или разработчик). Ниже небольшой хинт как сделать удобную заглушку для проекта на symfony 1.2 (для symfony 1.1 и 1.0 также можете воспользоваться данным руководством).
Volume testing: быстрое наполнение тестовых таблиц в MySQL
Представим, что вы создаете новое приложение и вам нужно протестировать его на большом объеме данных (volume testing). В этом случае вы можете взять уже готовые данные, или же подготовить их самостоятельно. Если у вас есть набор данных для тестов достаточного объема – это просто замечательно, но чаще всего данных нужного объема у вас не будет и вам будет нужен способ для быстрого их создания. Ниже будут перечислены три способа создания больших наборов данных простых типов (чисел, слов, дат).
MySQL генерация непрерывного диапазона дат
Столкнулся с ситуацией, когда посредством MySQL необходимо выбрать непрерывный диапазон дат. Казалось бы, что тут сложного? А вот что – в целевой таблице может не быть данных за какую-то из дат в диапазоне. Соответственно непрерывный диапазон не получается.
Решений наверное может быть много разных. Предлагаю ознакомиться с одним из них.
Continue reading
Strict php time zone
После миграции на PHP 5.3.0 посыпалось некоторое количество ошибок вида
SYSTEM WARNING: date(): It is not safe to rely on the system’s timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected ‘UTC’ for ‘GMT/0.0/no DST’ instead
Собственно они вызваны тем что по умолчанию отображаются ошибки уровня E_STRICT, что поидее должно подталкивать людей к исправлению ошибок, а не к игнорированию их. Ну раз так, то указанную ошибку нужно исправить указанием корректной таймзоны в php.ini (Документация: http://us2.php.net/manual/en/datetime.configuration.php#ini.date.timezone; Списки доступных зон: http://us2.php.net/manual/en/timezones.php). Меня устроил такой вариант:
;;;;;;;;;;;;;;;;;;; ; Module Settings ; ;;;;;;;;;;;;;;;;;;; [Date] ; Defines the default timezone used by the date functions ; http://www.php.net/manual/en/datetime.configuration.php#ini.date.timezone date.timezone = Europe/Moscow
Quick nginx под CentOS 5.3
Под катом рассматривается пошаговый процесс сборки nginx под CentOS 5.3
Установка свежей версии PHP на RedHat / CentOS 5
В основных репозиториях версии PHP зачастую не самые свежие, поэтому если хочется версию поновее (обычно хочется самую новую), нужно воспользоваться репозиторием remi.
На самом деле все очень просто, и если нужна не какая-то специфичная конфигурация, установка собранного php себя вполне оправдывает. Итак:
mysqldump и /*!40001 SQL_NO_CACHE */
Долгое время в рассылке медленных логов от maatkit меня тревожила запись вида:
# pct total min max avg 95% stddev median # Count 38 310 # Exec time 67 355s 0 85s 1s 992ms 8s 0 # Lock time 0 0 0 0 0 0 0 0 # Rows sent 99 10.57M 0 2.66M 34.93k 65.68k 223.39k 9.83 # Rows exam 60 10.57M 0 2.66M 34.93k 65.68k 223.39k 9.83 # Users 1 dbusr # Databases 3 d1 (4), d2 (2), d3(1) # Time range 2009-10-07 08:00:02 to 2009-10-07 16:02:38 # Query_time distribution # 1us # 10us # 100us # 1ms # 10ms # 100ms # 1s ################################################################ # 10s+ ########################## # Tables # SHOW TABLE STATUS FROM `d1` LIKE 'tbl_n'G # SHOW CREATE TABLE `d1`.`tbl_n`G SELECT /*!40001 SQL_NO_CACHE */ * FROM `tbl_n`G # Converted for EXPLAIN # EXPLAIN SELECT /*!40001 SQL_NO_CACHE */ * FROM `tbl_n`G
Пренеприятнейший лог надо вам сказать. Какая-то зараза выбирает до 2.66M записей разом (за половину суток > 10М). И так каждый день. Собственно забивать закрывать глаза на эту проблему помогал тот факт что на сервисе и нагрузке это вроде бы никак не отражалось.
Однако стоило приглядеться и картина стала ясной.
1. факт – большой разброс макс-мин-95% строк за выборку: 2.66M – 34.93k – 65.68k
2. факт – mk-query-digest агрегирует схожие запросы
Виновником этой строки стал mysqldump (что и было проверено и подтверждено визуально слежением за slow-log во время дампа).
p.s. спасибо munin и maatkit за наш спокойный сон )
hth!
Отправка email из компонента joomla
Как оказалось это несложно
$user =& JFactory::getUser(); $message =& JFactory::getMailer(); $message->addRecipient($user->email); $message->setSubject('Your subject string'); $message->setBody("Your body stringnin double quotes if you want to parse the nnewlines etc"); $sender = array( 'sender@email.address.org', 'Sender Name' ); $message->setSender($sender); $sent = $message->send(); if ($sent != 1) echo 'Error sending email';
Источник – http://docs.joomla.org/How_to_send_email_from_components
Тестер http-статус кода для munin
Мелочевка в копилку. Как оказалось, может быть полезно. Сразу оговорюсь, решение не гениальное, но забавное 😉