Как заставить веб-приложение (PHP) получать ответ от API (Python) после долгого времени ожидания? - PullRequest
0 голосов
/ 12 апреля 2019

У меня есть веб-приложение, написанное на PHP, работающее на виртуальной машине Linux Azure с NGINX.Приложение подключено к API (написанному на Python) на отдельном сервере с NGINX (аналог виртуальной машины Linux Azure).Этот API-интерфейс выполняет сложную операцию, выполнение которой занимает от 30 секунд до 20 минут.Поэтому приложение должно ждать его.

Проблема в том, что при длительном ожидании ответ API не регистрируется в веб-приложении.Я пробовал следующее:

- проверено в конечной точке API и журналах, что API предоставляет ответ после длительного времени обработки (это делает)

Я подозреваю, что это проблема тайм-аутапоэтому попробовал:

- исправлены настройки тайм-аута PHP и таймаута для конечной точки /login_c/check_login

- проверен код запроса и ответа, отправленного и полученного из API, где я нахожусьиспользуя метод curl.Это параметр для времени ожидания:

curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 2100);".

Метод exec выполняется в фоновом режиме:

exec($command);

Следующие статьи не предоставили решения:

Установка времени ожидания Curl в PHP

Время ожидания методов PHP cURL для некоторых URL-адресов, но командная строка всегда работает

Любые советы о том, какрешить эту проблему?

Ответы [ 2 ]

0 голосов
/ 12 апреля 2019

Похоже, это решило проблему:

curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($ch, CURLOPT_TIMEOUT, 2100);".
0 голосов
/ 12 апреля 2019

Вы должны отредактировать php.ini или добавить в php скрипт:

ini_set("max_execution_time",1800); //for 30 minutes request
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...