Так это проще не на PHP делать, а на JavaScript: если 3 сек. прошло - кнопка нажимается, а если нет - выскакивает сообщение.
Если же делать на PHP, то просто запоминать в сессии дату/время последнего запроса. И промежуток времени между предыдущим и актуальным запросами слишком мал - возвращать сообщение об ошибке.
До вызова session_start на страницу не должно выводиться ни одного символа, т.к. она устанавливает заголовки страницы - и не может их установить, если уже выдается тело страницы. Убирайте все эти комментарии до <?php
var url_string = "http://site.ru/?utm_source=email&utm_content=notification&utm_term=www"; //window.location.href
var url = new URL(url_string);
var utm_term = url.searchParams.get("utm_term"); //"www"
Включаем php 7.x.
Включаем логирование (судя по вопросу).
Пока не работает:
Проверяем где поломалось.
Определяем количество подобного кода, который сломался.
Правим.
1) По мне самый оптимальный. Каждый проект независим друг от друга, но их связывает общее "что-то". Легко отслеживать какие изменение в каком проекте были, нет путаницы.