Сегодня появилась задача типа, нужно отправить письмо на почту пользователя если тот добавил в корзину товар, но не оформил заказ.
Проблема в том что я не могу понять как отследить когда пользователь покинул сайт, именно не вышел с акаунта, а закрыл все вкладки в браузере.
Может у когото есть мысли на этот счет?
Комментарии
Если он закроет все вкладки, то сайт уже не сможет ничего понимать, он потеряет его из виду. Да?
по таймеру ajax-запросом с периодом Т обращаться по некоему пути, реализуемому модулем.
если запроса нет, скажем Т*10 секунд - значит закрыл.
например, он пишет в таблицу записи: uid - last_req_time
если необходимость в мониторинге отпадает (юзер вышел, или оформил заказ) - его строка убирается из таблицы.
а по крону - смотрим: у кого на момент вызова time - last_req_time > 10*T - те ушли.
рассылаем им письма и удаляем строчки.
ну с кроном-то нет проблем ..
SELECT uid FROM logout_users WHERE ...
и скармливаем в список какому нибудь simpleMail. а он - уж сам разбирается с рассылкой ..
JS спокойно отслеживает клик на закрытие вкладки. По нему еще можно выполнять действия.
Шлем запрос что такой-то пользователь ушел. Создаем какую-нибудь таблицу где будет список очередить для отсылки писем с напоминанем, куда будут попадать при закрытии, и удалятсья после отправки.
А отследить корзину по сессии можно, её также передавать в момент закрытия.
А успеет запрос выполнится?
пока не выполниться вкладка не закроется, особо хитроумные вешают alert с рекурсией совсем закрыть нельзя.
ну как не имеет ..
это практически идея для модуля ..
может быть в рамках rules ..
А нельзя ли смотреть, когда была создана корзина, и если прошло времени больше T, тогда отправлять письмо.
Просто если следить за тем, что пользователь закрыл корзину, то с большой вероятностью письма будут улетать в случаях: