Slava Rozhnev, И ... всё. Комментарий про то что такой нюанс не упомянут, в случае если у нас есть AUTO_INCREMENT ключ.
В сочетании с любовью некоторых использовать int вместо bigint для PRIMARY помноженную на миллионы INSERT можно быстро добраться до 4 294 967 295
Можно создать тестовую папку потестировать на ней
В том числе можно вручную поменять файлам дату создания/изменения чтобы не ждать touch -d "2 hours ago" filename
По сути у автора это же и реализовано - все не найденые файлы заворачиваются на index.php
Только uri для dispatcher'а надо брать не из $_SERVER['REQUEST_URI']. а из $_GET['q'] и $_GET['q'] внутри приложения всегда получется занятым под роутер
В таком случае порядок действий будет следующий
1. добавить задачу в очередь на обработку визита (простой и быстрый insert в бд)
2. отправить пользователя по редиректу
3. в фоне обработчик очередей разбирает задачи из очереди и вносит записи в БД
Что делать если скрипт внезапно прервётся в процессе работы, например не хватило памяти, или перезагрузили сервер или сторонний процесс его убил? Получим вечный лок который надо идти снимать руками.
Антон Шаманов, оба варианта не покрывают задачу автора - так как нужно найти в PHP файлах данные которые впустую передаются во view-файлы.
Не знаю какого размера там legacy проект, но при должной сноровке и нормальном IDE делов не больше чем на день, если всё проверять вручную.
В сочетании с любовью некоторых использовать int вместо bigint для PRIMARY помноженную на миллионы INSERT можно быстро добраться до 4 294 967 295