如何让Web应用程序(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 上超时,但命令行始终有效

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

您必须编辑 php.ini 或添加到 php 脚本:

ini_set("max_execution_time",1800); //for 30 minutes request

这似乎解决了问题:

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

相关内容

  • 没有找到相关文章

最新更新