Как бороться с дублированием идентичных запросов на сервере?
Здравствуйте! Возникла следующая проблема.
Клиент отправляет запрос на мой сервер, например, на handler.php. В теле запроса присутствуют параметры, которые мне необходимы, к примеру:
$_REQUEST = [
'auth' => '123412341234',
'member_id' => 'asdfasdfasdf'
];Мне нужно обработать этот запрос и дать ответ. Однако сложность заключается в том, что одновременно приходят два абсолютно идентичных запроса в одно и то же время. В процессе обработки я обращаюсь по REST к стороннему сервису, и дублирование запросов приводит к ошибке с его стороны.
Что уже было опробовано
- Рандомная задержка и блокировка потока: Вставлял случайную задержку в handler.php, после чего проверял, запущен ли уже такой процесс. Реализовал блокировку потока через fopen и flock.
- Очередь через Redis: Складировал запросы в Redis, затем из handler.php выполнял
exec(php worker.php)и разбирал то, что есть в очереди. Однако проблема в том, что всё равно запускаются два процесса worker.php. - Настройка сервера: Пытался ограничить количество запросов на уровне сервера (CentOS). Но настройки позволяют регулировать лишь количество запросов в секунду, а в моём случае запросы приходят строго одновременно.
Вопрос
Подскажите, пожалуйста, как можно решить эту проблему?