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

Расскажите, пожалуйста, кратенько про реализацию. Может есть какие-то готовые модули для такой штуки? Желательно без установки всяких node.js и ape фреймворков. Это возможно?
php, mysql

14 Responses to Пацанчики, а как работают системы уведомлений на сайтах.

  1. TaRenko:

    Смотря какая нагрузка. Могу предположить, что в твоем случае это будет стэк LIFO, организованный в виде одной таблицы. У админа скрипт через AJAX стучится через равные интервалы времени в эту таблицу и если есть запись отображает ее, потом удаляет просмотренные.

  2. DiTunes:

    вот. про нагрузку.
    нагрузка маленькая, очень маленькая.
    в интернет магазине делается заказ, администратора нужно уведомить всплывающей фигней и звуком.
    я так понимаю, что-то подобное на клиенте:

    (function poll(){
    $.ajax({ url: «server», success: function(data){
    показываемУведомление();

    }, dataType: «json», complete: poll, timeout: 30000 });
    })();

    А на сервере я просто при каждом обращении проверяю, были ли новые заказы с момента последней проверки.
    Примерно так?

    Это правильно решение простой проблемы или через жопу?

  3. 5auam:

    при маленькой нагрузке — вполне.
    при большой у тебя начнёт тормозить база (в лучшем случае) и надо будет задуматься о демонах.

  4. TaRenko:

    я бы сделал так: создал таблицу notifies c тремя полями
    1 текст уведомления
    2 время
    3 флаг было ли уведомление просмотрено

    При заказе, в эту таблицу добавляется запись вида (‘Новый заказ(html ссылка на этот заказ) от …’, NOW(),FALSE)

    У админа по таймеру js обращается к некому скрипту get-notify.php, который отдает через json самую старую не просмотренную запись
    SELECT notify_, title FROM notifies WHERE is_show = FALSE ORDER BY add_time DESC LIMIT 1;
    дальше либо админ нажимает на подтверждение просмотра после чего отправляется еще один ajax запрос на скрипт который модифицирует флаг is_show у записи, либо мы считаем, что все отданные нотификации считаеются просмотренными, тогда изменения флага будет происходит прямо в get-notify.php

  5. TaRenko:

    о шаред мемори и семафорах тогда уже 😉

  6. 5auam:

    это уж как напишешь.

  7. Xuagreen:

    Раз нагрузка маленькая, то по хуй как, хоть ифрейм с авто-рефрешом (:

  8. DiTunes:

    хочется красиво

    буду пробовать с этим ajax long poll

  9. Leeam:

    comet-сервер тебе в помощь. http://dklab.ru/lib/dklab_realplexor/

  10. Ylfer:

    там перл демон

    Linux Nix Web Development - http://linuxoids.org/ image

  11. DiTunes:

    я ведь сказал, что нужно решение без установки лишней херни

  12. Leeam:

    тогда твой путь через велосипедов построение лежит.

  13. DiTunes:

    в моем случае ajax long poll вполне себе решение

  14. OkkGood:

    А зачем обязательно использовать SystemV?

    Когда тут необходим обычный комет, реализованный хоть на чём, хоть на libevent, хоть на мемкеше или редисе.

    PS Есть уже готовые решения для php:

    https://github.com/cboden/Ratchet и https://github.com/kakserpom/phpdaemon

Добавить комментарий