Отследить когда пользователь покинул сайт

Главные вкладки

Аватар пользователя tarasikarius tarasikarius 15 октября 2014 в 13:49

Сегодня появилась задача типа, нужно отправить письмо на почту пользователя если тот добавил в корзину товар, но не оформил заказ.
Проблема в том что я не могу понять как отследить когда пользователь покинул сайт, именно не вышел с акаунта, а закрыл все вкладки в браузере.
Может у когото есть мысли на этот счет?

Комментарии

Аватар пользователя Formatix Formatix 15 октября 2014 в 14:25

по таймеру ajax-запросом с периодом Т обращаться по некоему пути, реализуемому модулем.
если запроса нет, скажем Т*10 секунд - значит закрыл.

Аватар пользователя Formatix Formatix 15 октября 2014 в 14:42

ХулиGUN wrote:
"Formatix" wrote:
если запроса нет, скажем Т*10 секунд - значит закрыл.

А каким образом модуль проверит, что не было запроса?

например, он пишет в таблицу записи: uid - last_req_time
если необходимость в мониторинге отпадает (юзер вышел, или оформил заказ) - его строка убирается из таблицы.
а по крону - смотрим: у кого на момент вызова time - last_req_time > 10*T - те ушли.
рассылаем им письма и удаляем строчки.

Аватар пользователя Formatix Formatix 15 октября 2014 в 22:10

ХулиGUN wrote:
"Formatix" wrote:
а по крону

то есть ещё и реализация крона...

ну с кроном-то нет проблем ..
SELECT uid FROM logout_users WHERE ...

и скармливаем в список какому нибудь simpleMail. а он - уж сам разбирается с рассылкой ..

Аватар пользователя Niklan Niklan 15 октября 2014 в 18:59

JS спокойно отслеживает клик на закрытие вкладки. По нему еще можно выполнять действия.

Шлем запрос что такой-то пользователь ушел. Создаем какую-нибудь таблицу где будет список очередить для отсылки писем с напоминанем, куда будут попадать при закрытии, и удалятсья после отправки.

А отследить корзину по сессии можно, её также передавать в момент закрытия.

Аватар пользователя Plazik Plazik 15 октября 2014 в 19:56

"Niklan" wrote:
JS спокойно отслеживает клик на закрытие вкладки. По нему еще можно выполнять действия.

А успеет запрос выполнится?

Аватар пользователя Formatix Formatix 15 октября 2014 в 22:18

ХулиGUN wrote:
"Formatix" wrote:
ну с кроном-то нет проблем ..
SELECT uid FROM logout_users WHERE ...
и скармливаем в список какому нибудь simpleMail. а он - уж сам разбирается с рассылкой ..

Это всё понятно, мне тоже проще самому написать костыль, который к друпалу абсолютно никакого отношения не имеет)))

ну как не имеет ..
это практически идея для модуля ..
может быть в рамках rules ..

Аватар пользователя kv4 kv4 16 октября 2014 в 5:36

"tarasikarius" wrote:
Сегодня появилась задача типа, нужно отправить письмо на почту пользователя если тот добавил в корзину товар, но не оформил заказ.

А нельзя ли смотреть, когда была создана корзина, и если прошло времени больше T, тогда отправлять письмо.

Просто если следить за тем, что пользователь закрыл корзину, то с большой вероятностью письма будут улетать в случаях:

  • пользователь случайно закрыл вкладку;
  • пользователь закрыл вкладку, что бы зайти в магазин другим браузером (в анонимном режиме, тором или ещё что-то ему в голову взбредёт);
  • пользователь закрыл вкладку, когда подошёл или начальник/жена/муж/сын/дочь (нужное подчеркнуть);
  • и ещё куча причин, по которым он может в данный момент закрыть вкладку.