Берём, например, материал №1 и рассылаем его 10000 пользователей - т.е. создаётся рассылка №1
Хотим сделать еще одну рассылку (№2) по материалу №1, но в этом случае нужно исключить предыдущих 10000 пользователей из рассылки
Пока есть такой вариант: пишем в таблицу БД рассылку №1 и в blob-поле пишем json-объект с массивом id пользователей, далее, при рассылке №2 проверяем таблицу на наличие предыдущих рассылок, и в случае если они имеются (рассылка №1), тогда получаем массив id пользователей из json-объекта рассылки №1, и исключаем этих пользователей из рассылки №2.
В целом, планируется выполнять 3-5 рассылок по одному материалу, количество пользователей 10 000 - 50 000
Подскажите, а каким образом вы производите логирование рассылок по материалам и исключаете тех пользователей, кому уже отправляли рассылки по материалу?
Ведь проще сформировать php-массив, преобразовать его в json и записать в БД, в итоге будет 1 рассылка и 1 json-объект id пользователей = 1 строка в таблице (с blob-полем)
Далее, при следующих рассылках, мы достаём из blob-поля json, декодируем его, получаем массив id
Stalker_RED:
А какой подход предлагаете Вы?
Фиксировать каждый id пользователя со ссылкой на id рассылки в отдельную строку таблицы?
Далее, при следующих рассылках, мы достаём из blob-поля json, декодируем его, получаем массив id
Затем передаем этот массив на печать, распечатанный рулон отдаем Золушке Василивне, чтоб она вручную отобрала те айди, которые еще не участвовали в рассылке, ага?
Мне кажется, что это работа для базы данных. А вам кажется, что вы строчки в базе данных экономите.
А сортировку уже отменили? :)
Отсортировали по айдишнику пользователей, сделали рассылку первым десяти тысячам, в случае каких-то ошибок записываете иды с которыми они возникли. Потом второй десяток, третий и так далее.
Всем тем, с кем возникли ошибки, через 20 минут еще раз пробуете отправить. И отпала необходимость хранить эти
данные.
Сортировкой тут не отделаешься
Так как, например, сегодня мы делаем рассылку 10 000 пользователей отсортированным по дате последней авторизации, а завтра делаем рассылку 10 000 отсортированным по количеству комментариев, за исключением предыдущих 10 000
Дело не в активности пользователей
А в том, что критерий сортировки при отборе пользователей, может меняться от рассылки к рассылке
Главное, чтобы при очередной рассылке Не отсылать уведомление тем пользователям, кому уже отсылали уведомление