PHP:正确的过程,以避免超时问题

时间:2015-11-05 18:33:25

标签: php curl timeout

我有一个PHP网站,我使用的其中一个页面对另一个服务器进行CURL调用。现在这个服务器需要大约45秒来响应,而我无能为力。实际上有2步获取信息,第一步是发送更新信息的请求(这需要大约43秒)和在我需要发送另一个请求以获取数据后(通常需要2-5秒)。

我的服务器在GoDaddy上,显然有时会超时(CGI Timeout)因为我认为它通常是30秒。

此脚本(询问请求+获取数据)通常通过cron作业在一夜之间触发,但可以在白天触发。

所以我想知道:什么是拆分信息以避免超时问题的最佳方法?

我在考虑发送更新请求并且不关心结果。然后,大约一分钟后,我会发送请求以获取数据。但是,我不知道是否可以在PHP中执行计时器,如果是这样,页面是否会超时呢?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以在PHP代码中设置超时值,以便有更多时间。

Setting Curl's Timeout in PHP

如果你想单独运行文件,我会为第二个文件设置一个单独的cron作业。

答案 1 :(得分:0)

使用CURLOPT_CONNECTTIMEOUT增加服务器响应时间。

CURLOPT_CONNECTTIMEOUT  

尝试连接时等待的秒数。使用0无限期等待。

然后你需要使用CURLOPT_TIMEOUT来使用CURLOPT_CONNECTTIMEOUT选项。

像这样,

curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,0); // 0 for wait infinitely, not a good practice

curl_setopt($ch, CURLOPT_TIMEOUT, 400); //in seconds

你可以在微秒内设置它,就像这样,

 CURLOPT_TIMEOUT_MS