Похоже, довольно хорошее решение, хотя, возможно, вы могли бы использовать session_id () вместо IP-адреса.Таким образом, если вы имеете дело с людьми за маршрутизатором, вы не будете блокировать людей, которые не бьют.Хотя session_id может быть легко сгенерирован, когда они очистят свои куки, но, вероятно, им потребуется больше времени, чем просто подождать 5 секунд.Вы определенно не хотите спать в скрипте PHP, поскольку он просто поддерживает процесс PHP во время сна.
Вы можете настроить другой элемент memcache, чтобы отслеживать, сколько раз они нажимали предупреждение, например,1 час, а затем вы можете сделать что-то более резкое или записать информацию о пользователе.
Хотя может быть лучше попытаться оптимизировать операцию, чтобы она была не такой дорогой (легче сказать, чем сделать).