Добрый день! Подскажите алгоритм реализации отправки сообщения по cron 1. Имеется переписка между всеми пользователями (хранится статус сообщения прочитано/нет, дата, кто, кому, id сообщения) 2. Имеется статус пользователя онлайн/офлайн, даты хранятся в базе (когда был последний раз) Необходимо отправлять ОДНО сообщение пользователю, который сейчас находится в офлайне, при том, что отправка должна быть ОДНА, даже если было отправлено сообщение от того же пользователя, но через промежуток времени. То есть отправив еще 1 сообщение через час, уведомление уже не приходит. И так все в цикле для всех пользователей.
по умолчанию хранить 0 счетчике оповещений. отправив первое письмо - накрутить до единицы. отправив второе письмо - накрутить до двойки. более писем не отправлять. для проявившегося в онлайне счетчик сбросить. или можно по дате последнего действия: +50-70 минут с последней активности - первое письмо, +110-120 - второе, всё выше - не оповещать. второй вариант мне нравится, да.
а по дате как получается? крон запускать получается в промежуток 50-70 минут (например каждый час), чтобы повторно не отправить уведомление Добавлено спустя 39 минут 48 секунд: По итогу получилось такая выборка. И ставим крон на 1 час, тогда по идеи 1 сообщение максимум 1 раз в час. Все верно? Код (PHP): SELECT a.*, DATE_FORMAT(b.last_datetime, '%Y-%m-%d %H:%i') as datetime, c.email FROM `dialog_user` a LEFT JOIN contact_user b ON (b.id = a.komy) LEFT JOIN contact_emails c ON (c.contact_id = a.komy) WHERE a.status = 0 AND b.last_datetime BETWEEN (DATE_SUB(NOW(),INTERVAL 50 MINUTE)) AND (DATE_SUB(NOW(),INTERVAL 10 MINUTE)) GROUP BY a.komy PHP, JavaScript, SQL и другой код пишите внутри тегов Код ( (Unknown Language)): [b]php][/b]Тут код[b][/[/b][b]code][/b][/color]