Как реализовать серверную часть проверки бд, на новые оповещения для пользователя?
не все базы данных предоставляют такой функционал, например postgres позволяет, используя sql выражения LISTEN и NOTIFY, и соответствующий метод на клиенте pg:
php.net/manual/ru/function.pg-get-notify.php
К сожалению php не event oriented язык програмирования (только сокеты позволяют красиво все делать асинхронно), то либо вы вызываете pgsqlGetNotify с 1 или 0.1 секундным интервалом в цикле, проверяя наличие notify либо слушаете свой сокет асинхронно в своем приложении, а в соседнем в цикле с 10-30 секундным ожиданием ждете событие и отправляете ответ в этот сокет.
если база данных не умеет listen или аналоги, у вас только один путь - опрашивать эту базу периодическими запросами в цикле (советую опрашивать специальную таблицу, в которую вы будете триггерами или еще как записывать необходимые события, иначе нагрузите базу по самое немогу)
----------
чтобы отправить ответ на сторону веб-клиента, вы вынуждены будете либо использовать long pooling (устаревшая технология, с кучей проблем) либо посмотреть примеры по работе с websocket и научиться наконец красивому event-based программированию, посмотрите примеры сервера websocket на php (на стороне клиента все еще проще)
socketo.me/docs/hello-world
В этом случае ваше php приложение становится полноценным веб-сервером (вебсокет например), который все еще не рекомендуют выпускать в интернет напрямую, и устанавливают между интернетом и им классивческий ngnix или apache.
В этой идеологии, если вам нужно было бы в цикле что то опрашивать по таймауту, вы создаете таймер, на событие которого вызывается ваш метод (т.е. нигде у вас не будет этого цикла, блокирующего все выполнение приложения), если от клиента вам приходит сообщение у вас так же дергается метод.
Этот подход на столько эффективный, что написано уже много асинхронных библиотек, в т.ч. для работы с базами данных (запросы выполняются не сразу, нет нужды php приложению их просто ждать, можно что-нибудь еще делать) а скорость итоговых приложений вырастает в десятки-сотни раз.
p.s. nodejs любят за то что асинхронных подход там используется изначально