Всем привет, пишу сайт на yii2, с личным кабинетом, как лучше реализовать оповещение об сообщении, или комменту к товару, или админу о новом пользователе онлайн, без перезагрузки странички? По гуглив нашел пару вариантов:
1.Ajax, каждую допустим минуту лупить ajax запросами на кол-во элементов с статусом не прочитанно или что-то вроде того.
Очень не очень как по мне, много лишних запросов и нагрузки на сервак, а если допустим будет пользователей 100 на сайте, это каждому Ajax отчет, напряжно...
2.Cron, не работал с ним еще, но как понял можно точно так же поставить выполнения какого-то скрипта, но в фоновом режиме, меньше напряга?
3. Web socket, тоже вообще не знаком, понял что на них чаты пишут, но и мою задачу могут решить, правда еще не знаю как(
Никто не подскажет как бы это лучше реализовать, если в базу поступила новая инфа в определенную таблицу, то выполниться скрипт, тот же Ajax например) И вообще совместимо это с yii2 и php?
Вариант с ajax не советую
Cron - вариант
Web socket - хороший вариант, но придется с ним разобраться.
Проще всего сделать логику, которая будет решать есть уведомления или нет и повесить ее в конфиге на событие beforeRequest. тогда при каждом запросе будет выполняться эта логика. Допустим создать таблицу id|user_id|message|date_create|date_not_actual и писать в нее события. Зарегился пользователь записали и т.д. А в Вашей логике читать эту базу и выводить оповещения. Можно закешировать, сделав зависимость от count сообщений для пользователя. Пример таблицы абстрактный, тут смотря какие уведомления и о чем хранить.
Максим Тимофеев,Yiiхты! ) Вы как всегда на высоте ответили) Про beforeRequest очень даже здорово бы было, а по сокетам не подкините инфы? А то по ютубу вообще пустовато, только чаты пишут и все через node.Js. Ну или если не сложно урок запишите, уверен многим было бы полезно, современная технология. Хотелось бы все-же попробовать обуздать socet, много где еще пригодиться, чтоб не писать велосипеды)А кеш будет обнулятся при обновлении данных да?
yurygolikov, Ухх, мощно) Наверное не потяну такое) Я не с node.js толком не с сокетами не знаком, а тут нужно сделать не хилую связку из yii - socket.io - node.js, за идейку спасибо, но боюсь хардкорно для меня, + чет вообще мануалов по сокетам не могу годных с искать( Это для меня темный лес, да еще и без фонарика)Если можно статейку или видос на что-то похожее?
не, суть в том что прям на сайте нужно) так то хоть на почту можно оповещалку кидать, а мне нужно онлайн так сказать, как в том же телеграме, приходит мс и ты ее сразу же видишь, и +1 возле сообщений, ну или как там..
Alex Mirgorodskiy, нет. Только теория, на практике не применял. Все ругаю себя за это. Надо обязательно разбираться, технология из разряда "знать обязательно". Постоянно почитываю, но все нет времени сделать что-то.