Если зарегистрированных пользователей сайта более 500, то при отправке массовой рассылки через com_massmail рабочий скрипт может отвалиться по таймауту с ошибкой от nginx 502.
Разбиваем отправку по 500 ящиков.
В скрипте administrator/components/com_massmail/admin.massmail.html.php
в первой таблице <table class="admintable"> добавляем строку:
<tr>
<td width="10">
<?php echo JText::_( 'Users e-mail interval:' ); ?>:
</td>
<td width="10">
<SELECT NAME="mcount" NAME>
<OPTION VALUE="0" SELECTED>Select Count
<OPTION VALUE="500">1-500
<OPTION VALUE="1000">501-1000
<OPTION VALUE="1500">1001-1500
<OPTION VALUE="2000">1501-2000
</SELECT>
</td>
</tr>
можно допилить меню и сделать свои промежутки по реальному кол-ву пользователей - сгенерить OPTION VALUE из базы.
В скрипте administrator/components/com_massmail/admin.massmail.php
В функции function sendMail() добавляем:
$mcount = JRequest::getVar( 'mcount', 0, 'post', 'int' );
и далее заменяем:
// Get all users email and group except for senders
$query = 'SELECT email'
. ' FROM #__users'
. ' WHERE id != '.(int) $user->get('id')
. ( $gou !== 0 ? ' AND id IN (' . implode( ',', $to['users'] ). ')' : '' )
;
на:
if ($mcount == 0) {
// Get all users email and group except for senders
$query = 'SELECT email'
. ' FROM #__users'
. ' WHERE id != '.(int) $user->get('id')
. ( $gou !== 0 ? ' AND id IN (' . implode( ',', $to['users'] ). ')' : '' )
;
}
else {
$r1 = $mcount - 500;
$r2 = 500;
// Get 500 users email and group except for senders
$query = 'SELECT email'
. ' FROM #__users'
. ' WHERE id != '.(int) $user->get('id')
. ( $gou !== 0 ? ' AND id IN (' . implode( ',', $to['users'] ). ')' : '' )
. ' LIMIT '.$r1.' ,'. $r2
;
}