首页 > 解决方案 > 长时间等待后,如何让 webapp (PHP) 收到来自 API (Python) 的响应?

问题描述

我有一个用 PHP 编写的 Web 应用程序,在带有 NGINX 的 Linux Azure 虚拟机上运行。该应用程序使用 NGINX(类似 Linux Azure 虚拟机)连接到单独服务器上的 API(用 Python 编写)。此 API 执行复杂的操作,需要 30 秒到 20 分钟才能完成。所以应用程序必须等待它。

问题是等待时间很长,API 响应没有在 Web 应用程序中注册。我尝试了以下方法:

— 在 API 的端点和日志中验证 API 在长时间处理后提供响应(确实如此)

我怀疑这是一个超时问题,所以尝试过:

— 修复 PHP 超时设置和  /login_c/check_login端点超时

— 检查从 API 发送和接收的请求和响应的代码,我使用 curl 方法。这是 curl 超时的参数:

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

exec 方法在后台执行:

exec($command);

以下文章没有提供解决方案:

在 PHP 中设置 Curl 的超时时间

PHP cURL 方法在某些 URL 上超时,但命令行始终有效

关于如何解决这个问题的任何建议?

标签: phpapinginxtimeout

解决方案


似乎这解决了问题:

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

推荐阅读