Резервное копирование баз данных с отправкой на email

Навеяно статьёй Дмитрия «Ежедневный бэкап для WordPress с помощью Gmail», которую я очень рекомендую к прочтению.

Основное отличие моего метода кроется в моих «религиозных предпочтениях»: я считаю, что вряд ли какая программа сможет сделать копию базы быстрее, чем mysqldump, и бинарный файл всегда работает быстрее, нежели самый оптимизированный -код. Поэтому никаких лишних плагинов для , только подручные средства :-) Хотя данное решение не подойдёт людям, использующих shared-хостинг. Далее »

Автор: , опубликовано в: Linux, Администрирование, комментариев: 2
19
Апр
2009

PHP 5.2.6 в Debian Lenny: неожиданный сюрприз

Есть сервер с Lenny на борту. На сервер стоит Apache, , 5 — одним словом, стандартный web-сервер. Плюс XCache и ionCube Loader.

С некоторого времени стали замечать, что PHP начал падать с ошибками сегментации, причем падал исключительно CLI, модуль Apache работал исправно. Далее »

Автор: , опубликовано в: Linux, PHP, Администрирование, комментариев: 5
13
Мар
2009

Подсчёт трафика в nginx: часть 2

В статье «Подсчёт трафика в nginx» я приводил один из возможных вариантов живого подсчёта трафика в .

У прошлого решения есть недостатки:

  • используется три лишних процесса;
  • используется много файловых дескрипторов (зависит от количества виртуальных хостов).

Я на днях нашёл еще один вариант. Далее »

Автор: , опубликовано в: Linux, MySQL, nginx, Администрирование, комментариев: 7
21
Фев
2009

Подсчет трафика в nginx

Постановка задачи: есть -сервер, на котором живёт сотня-другая виртуальных хостов. Сервер работает под управлением . Нужно реализовать подсчет трафика с отображением «живой» статистики. Далее »

Автор: , опубликовано в: Linux, MySQL, nginx, Администрирование, комментариев: 9
23
Янв
2009

Мысли на тему массового UPDATE в MySQL

[-]
View Code MySQL
INSERT INTO `table` (`a`, `b`, `c`) VALUES
(1, 2, 3), (4, 5, 6), (7, 8, 9)
ON DUPLICATE KEY UPDATE `b`=VALUES(`b`), `c`=VALUES(`c`);

Например, для (при условии, что пара (user_id, meta_key) является уникальным ключом):

[-]
View Code MySQL
INSERT INTO `wp_usermeta` (`user_id`, `meta_key`, `meta_value`) VALUES
(1, 'key1', 'value1'),
(1, 'key2', 'value2'),
(1, 'key3', 'value3'),
(1, 'key4', 'value4'),
(1, 'key5', 'value5')
ON DUPLICATE KEY UPDATE `meta_value`=VALUES(`meta_value`);

Должно работать.

Автор: , опубликовано в: MySQL, комментариев: 6
18
Янв
2009

Автоматическое обновление баз HostIP

HostIP.info — сервис, позволяющий определить физическое местоположение по IP-адресу. Бесплатная альтернатива MaxMind. Одним из достоинств данного сервиса является то, что он предоставляет возможность хранить геолокационную базу данных на своём сервере. Очевидно, что базу данных нужно обновлять время от времени. Далее »

Автор: , опубликовано в: Linux, комментариев: 3
2
Янв
2009

WordPress под микроскопом

Навеяло комментариями к статье «Трудности веб-разработки» и недавним копанием во внутренностях

Да, WordPress сама по себе хорошая система (особенно с точки зрения конечного пользователя): в ней можно настроить абсолютно всё (особенно, когда есть деньги и парочка толковых программистов). Но есть одно большое «но»: если вы — опытный программист и волею Фортуны вам пришлось копаться во внутренностях этого чуда, то неизбежно в скором времени начинаете ощущать себя проктологом-патологоанатомом.

Если хочется кучу всякой гадости, вроде плагинов, редактирования страниц, темплейтов, интегрирования чего попало куда попало — естественно, за это приходится платить. Платить очень дорого.

А какое можно сделать «элегантное решение»? Чтобы оно обладало тем же функционалом? Можно только повторить монстра.

Доля истины в этом высказывании, разумеется, есть: чем универсальнее решение, тем оно монстроидальнее. Задача состоит в том, как этого монстра оптимизировать и минимизировать. Есть программисты, а есть быдлокодеры (у меня сегодня два цвета: чёрный и белый). Разница между первыми и вторыми заключается только лишь в умении использовать ресурсы серого вещества, именуемого мозгом. В результате у первых получается элегантное решение, а у вторых — Некрософт Виндовс Нерабочий Труп.

Это я всё к чему? Берём WordPress и смотрим:

MySQL: 45 запросов / 0.550 Потребление памяти: 10.1MB

У меня немного другая статистика (наверное, сервер мощнее): 50 запросов, 0.05 сек.

Пятьдесят плюс-минус пять запросов: много ли это? Фиг его знает, может и не много, ибо всё познаётся в сравнении. Ну так давайте сравним. Я «надругался» над несчастным WordPress и просто отрубил ему . Готовы?

1462 запроса и 2.02 секунды ( запросов превышает мегабайт). Те, кто знаком с оптимизацией запросов в , ужасайтесь вместе со мной.

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

Вот так.

Но, возможно, в следующей версии

Автор: , опубликовано в: WordPress, комментариев: 20
27
Ноя
2008

Можно ли написать серьёзное web-приложение с использованием MySQL, но без знания принципов работы MySQL?

Хотя я люблю , но то, что я увидел сегодня в коде, меня сильно потрясло.

Речь пойдёт о виджетах, а именно, о календаре и архиве. Я вкратце опишу реализацию каждого из них, а затем расскажу, почему так делать нельзя. Далее »

Автор: , опубликовано в: MySQL, Патчи, комментариев: 32
24
Ноя
2008

Секреты update_postmeta_cache()

Если плагину приходится в цикле читать метаданные для большого количества записей, можно увеличить путём использования функции update_postmeta_cache(). Далее »

Автор: , опубликовано в: Советы, комментариев: 6
1
Окт
2008

Чудеса…

Началось всё с того, что я забыл заплатить за Internet, и в благодарность за это мой провайдер меня безжалостно отрубил. Дело было вечером, делать было нечего, тем более, что я давно собирался написать статью про . И вот, когда я стал генерировать тестовую таблицу, начались чудеса… Далее »

Автор: , опубликовано в: MySQL, Юмор, комментариев: 3
1
Сен
2008