Как с помощью php делать паузу в выполнении скрипта?
Сделать невозможным изменение. Например, используем setTimeout, а время отложенного вызова передаём в заголовке сообщения от сервера.
Это не только решит описанную проблему, но и позволит управлять периодичностью запросов в зависимости от нагруженности сервера.
А вообще, для организации чата уже давно рекомендуется смотреть в сторону WebSockets.
Я бы сделал так.
Примитивно идея выглядит так. (Что-то типа псевдокода)if(date.now-date.request > 2)
{
session.write(date.request,date.now); 
return db.query();}
else 
{return "Слишком частые запросы";}
На словах после каждого обращения которое возвращает нормальные данные пишем в сессию пользователя текущее время, при каждом запросе проверяем разницу между успешным выводом и текущим временем, если разница нам нравится подключаемся к бд, даем данные и снова пишем текущее время, если нет то вместо подключения к базе выдаем ошибку.