Я опоздал на эту вечеринку, но позвольте мне дать два моих цента.
В этом конкретном сценарии нет необходимости использовать систему push для плохих уведомлений. Также нет необходимости в cron. Позвольте мне объяснить:
Допустим, A, B и C находятся в чате, а браузер B вылетает, поэтому его сеанс истекает. Прямо сейчас сервер думает, что B все еще там, но ее нет. Как вы обновляете A & C? Когда A & C просит об обновлении. Проверьте последнюю временную метку keepalive и выясните, что срок их сеанса истек.
Если все А, В и С потерпят крах, то этого никогда не произойдет, я слышу, вы спрашиваете. Какая разница? Сейчас никто не видит нашей ошибки! Единственным недостатком является поддержание их чата в живых, что требует некоторого пространства базы данных Это можно исправить при создании другого сеанса чата.
Финальная суть:
- Сохранять временные метки в последний раз, когда было предпринято действие.
- Используйте пользовательское событие для просмотра временных меток и удаления мертвой древесины.
В случае пользователей это будет их выход из системы. В случае чатов это будут те, срок действия которых истек.