@mirapi

Как сделать в javascript рассылку путем добавления строк в базе?

Доброго времени суток!

В небольшом приложении есть система сообщений, которая работает полностью на mysql. И иногда требуется сделать рассылку сразу нескольким пользователям.
Когда нужно отправить сообщение для менее чем 500 пользователей - php скрипт отлично срабатывает. Но вот для более большого количества часто случаются дубли, если делать так:

<?
$query = "SELECT `serial_num` FROM lua_account WHERE `last_login` >= '2018-06-11 00:00:00'";
$res = mysql_query( $query );

while ($item = mysql_fetch_array($res))
{
	$text = "Текст сообщения";
	
	$temp = "SELECT count(*) as count FROM lua_message WHERE `serial` = '{$item['serial_num']}' AND `Header` LIKE 'Заголовок'"; 
	$res_temp = mysql_query($temp); 
	$rows = mysql_fetch_array($res_temp);

	$message = $rows[0];
	if ($message == 0)
	{
		send_message($item['serial_num'], "Автор", "Заголовок", $text);
		$count += 1;
	}
}


send_message() - просто добавляет значение через INSERT INTO.

Добавлять задержку через wait - пробовал. Скрипт постоянно падает по долгому ожиданию.

Суть вопроса:
Как можно сделать подобное на javascript? т.е. получает таблицу из идентификаторов пользователей, и отправляем по 5 сообщений с ожидаем секунду, а в это время на экране показывается прогресс.
  • Вопрос задан
  • 66 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Yan-s
Что еще за глупости, делать это на JS.

Просто надо решить задачу на PHP правильно.
Непонятно, в чем у вас проблема с дублями? Из-за чего они появляются? Как это связано с "wait", для чего задержка?

Длительные операции, а в частности рассылки должны выполнятся в фоне. Реализуется с помощью очереди задач. Из интерфейса добавляете задачу в очередь, а запускается она кроном в CLI режиме, без ограничений на время исполнения.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы