Я думаю, что запросы к бд каждые n-секунд - решение не эффективное.
Зависит от СУБД. Если использовать классическую СУБД MySQL, то придётся делать запросы каждые n секунд.
Если же использовать другие системы, например Redis, можно подписываться на новые записи и получать их реактивно. Но для этого и само приложение (PHP скрипт) должно работать постоянно, что является отдельной темой для изучения.
Так что вопрос "не эффективности" скорее лежит в другой плоскости. Vk - это большая соцсеть. Но сколько у вас, конкретно в вашем приложении, планируется сообщений в секунду? Если это чатик местного сельпо и речь до сотнях сообщения в секунду или меньше - MySQL даже на средненьком хостинге справится по схеме "опрашиваем раз в несколько секунд, нет ли новых?", и это будет гораздо эффективнее с точки зрения трудозатрат на разработку, чем разбираться с демонтированным PHP и Redis.