drupal API

УрокПрограммный перевод текста с помощью Google Translate

Не так давно поставили передо мной задачу: парсить сайт на английском языке, попутно переводя его на русский. И именно перевод вызвал затруднения. Раньше ведь всё проще было, когда существовал бесплатный Google Translate API. А теперь лавочку прикрыли, попросив выложить на стол по 20$ за каждый миллион переведённых символов. Деньги совсем не большие, но русская душа требует халявы. Поэтому немного подумав, я нашёл вполне легальный способом обхода нововведения. А именно - воспользоваться их сервисом Google Translate со своего сайта :)

Без долгих введений, к бою:

УрокОбработка большого количества данных с помощью Batch API

Продолжается тема обработки большого количества данных. Как делать это в фоновом режиме при помощи крона я уже писал. Теперь о том, как реализовать обработку данных в пользовательском интерфейсе.

С работой батча сталкивались все, кто работал с Друпалом. Во время установки самого Дру, во время установки новых модулей (импорт переводов), обновление базы данных с помощью update.php и так далее. Визуально батч представляет собой полоску с индикатором выполнения:

УрокОбработка большого количества данных с помощью Queue API

В жизни каждого программиста попадаются заказчики, которые просят сделать для их сайта обработку большого количества данных, будь то постоянное обновление товаров для магазина, парсинг xml файлов, отправка десятков тесяч емейлов и так далее. Смысл в том, что решить задачу "в лоб" просто невозможно - сервер может не выдержать; или закончится время выполнения скрипта и обработка данных прервётся; или же (в случае рассылки емейлов) ляжет почтовый сервер, или того хуже - почтовый сервер решит, что вы спамер, и ваши письма будут доходить до адресатов с большим опозданием (если вообще дойдут).

Так же заказчик, естественно, не захочет каждый день заходить на сайт и нажимать какие-то кнопки, чтобы сайт крутился. Поэтому основной задачей в данной ситуации является невмешательно человека в жизненный цикл сайта.

УрокCоздание и обновление записей в базе данных через Drupal API

В большинстве модулей записи в базу данных делаются постоянно - будь то новые записи, или же обновление уже существующих. Друпал позволяет выполнять прямые запросы в базу через db_query.

Вставка записи:

db_query('INSERT INTO {mytable} (value1, value2) VALUES  (%d, "%s")', $int, $string);

Обновление записи:

db_query('UPDATE {mytable} SET value2 = "%s" WHERE value1 = %d', $new_string, $int);

Однако хорошим тоном является использование функции из Drupal API drupal_write_record.

УрокБазовая информация о кэше и о работе с ним в Друпале

Сегодня речь пойдёт о кэше. Не о деньгах, а именно о системе кэширования в качестве увеличения производительности сайта.

УрокИзмерение времени выполнения скрипта

Иногда может понадобиться измерить время выполнения кода, причин несколько:

  1. Измерить производительность, например измерить время выполнения двух функций, выполняющих одно и то же, но найти ту что быстрее.
  2. Просто вывести для пользователя время обработки его запроса, как на пример тут
  3. На одном сайте я видел фишку: "Мы работали для вас n секунд"

Могут быть и другие причины, мне другие пока не встречались. Делается это так:

  1. Функцией timer_start($name) включаем таймер.
  2. Выполняем какие то действия.
  3. При помощи timer_read($name) получаем количество миллисекунд, прошедших с момента включения таймера.