Выполнение многих длинных запросов cURL в фоновом режиме с использованием PHP, приводящее к ошибке 504 - PullRequest
0 голосов
/ 09 марта 2019

Я использую Ubuntu 16.04 VPS с Plesk, хостинг с несколькими веб-сайтами, написанными на PHP.

На одном из веб-сайтов есть функция, которая выполняет POST-запрос через cURL на другой сервер (давайте назовем его Server# 2).

Когда пользователь нажимает кнопку на веб-сайте, работающем на Сервере № 1, мне нужен Сервер № 1 для отправки запроса POST CURL на Сервер № 2.Для ответа на запрос серверу № 2 требуется около 15-60 секунд.

Чтобы решить проблему пользователей, ожидающих до 60 секунд на моем веб-сайте, я переместил медленный запрос CURL в отдельный файл PHP и вызвал егос shell_exec.Таким образом, пользователь на моем сайте не должен ждать завершения запроса.Он работает в фоновом режиме.

Вот функция shell_exec, которую я вызываю:

shell_exec("php slow_request.php '".$parameter.”’ > /dev/null &");

=====

Проблема начинает возникать при наличии несколькихпользователи сайта, вызывающие ту же функцию одновременно.Если одновременно происходит <5 запросов, то мой веб-сайт начинает выдавать ошибку тайм-аута шлюза 504. </p>

Я также получаю следующие выходные данные в моем логе error_log.

Сброс соединения по пиру:[клиент CLIENT_IP_HERE: ****] AH01075: ошибка отправки запроса на: [клиент CLIENT_IP_HERE] AH01067: не удалось прочитать заголовок FastCGI

Я уже пробовал следующее решение из документации Plesk: https://support.plesk.com/hc/en-us/articles/115000064929-Website-on-Plesk-server-is-not-accessible-504-Gateway-Time-out-The-timeout-specified-has-expired-client-203-0-113-2-54693-AH01075-Error-dispatching-request-to

Но это решение, по-видимому, разрешает только запросы, которые занимают более 60 секунд, а не большое количество одновременных запросов.

Как я могу увеличить количество запросов, которые могут выполняться одновременно через shell_exec?

Или есть ли лучшее решение для запуска медленных запросов в фоновом режиме, чем shell_exec?(Я не могу просто сделать запрос с установленным таймаутом в 1, потому что мне нужен ответ).

Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 09 марта 2019

Похоже, вы должны взглянуть на , как работают очереди

...