Столкнулся с тем, что при добавлении топиков, происходят достаточно сильные тормоза. После проведённого анализа выяснилось, что проблема тормозов ПОЧТА. При публикации топика происходит рассылка по всем пользователям, которые имеют отношение к блогу, в который происходит размещение материала.
При включении отложенной рассылки, всё приходит в порядок, но есть один очень не маловажный момент. Письма о регистрации, активации аккаунта или напоминания пароля, должны приходить незамедлительно.
Предлагаю к вашему вниманию следующий фикс.
В конфиге config/config.local.php добавляем следующие настройки
// Указывает на необходимость использовать режим отложенной рассылки сообщений на email
$config['module']['notify']['delayed'] = true;
// Если опция установлена в true, систему будет собирать записи заданий удаленной публикации, для вставки их в базу единым INSERT
$config['module']['notify']['insert_single'] = true;
// Количество отложенных заданий, обрабатываемых одним крон-процессом
$config['module']['notify']['per_process'] = 10;
Далее исправляем файл classes/modules/notify/Notify.class.php
Находим в нём функцию
public function Send($oUserTo,$sTemplate,$sSubject,$aAssign=array(),$sPluginName=null) {
В этой функции находим строчку
if(Config::Get('module.notify.delayed')) {
И заменяем её на
$isNotifyDelayed = Config::Get('module.notify.delayed');
if (($sTemplate == "notify.registration_activate.tpl") || ($sTemplate == "notify.registration.tpl") || ($sTemplate == "notify.reactivation.tpl") || ($sTemplate == "notify.reminder_code.tpl") || ($sTemplate == "notify.reminder_password.tpl")) { $isNotifyDelayed = false; }
if($isNotifyDelayed) {
PS: Возможно разместил топик не в тот блог, но в другие писать к сожалению не могу. Видимо не хватает рейтинга или силы.
Небольшое дополнение:
Кто-то может забыть, поэтому напоминаю, что необходимо по крону запускать скрипт include/cron/notify.php
есть 2 варианта запуска.
1. используя HTTP.
для этого необходимо поправить .htaccess в папке include/cron/
содержание должно быть
Order Deny,Allow
Deny from all
Allow from XXX.XXX.XXX.XXX
вместо XXX.XXX.XXX.XXX укажите IP, с которого будет производиться HTTP запрос.
и в крон можно внести следующую запись
*/5 * * * * wget -O- http://www.livestreet.ru/include/cron/notify.php >> /dev/null
2. либо из консоли.
и в крон можно внести следующую запись
*/5 * * * * /usr/bin/php /vhosts/site.ru/www/include/cron/notify.php
Пути указывайте в соответствии с настройками вашего сервера.