我有一个共享主机的网站,Entry Processes限制为 30。我在 PHP cron 作业上使用 cURL 函数定期从另一个 URL 获取数据。相关代码如下。 $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); curl_setopt($ch, CURLOPT_HTTPHEADER, $header); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);大多数时候,我的网站运行得很好,只使用了大约 4-5 个进入过程。每当此目标$url由于某种原因没有响应时(并且经常发生)。我很快进入了进入流程限制,所有进一步的请求都被拒绝了。CURLOPT_CONNECTTIMEOUT似乎没有按预期工作。我怎样才能避免这种情况?我检查了其他 cURL 选项,但似乎都没有工作。
1 回答
慕沐林林
TA贡献2016条经验 获得超9个赞
10 秒的超时时间非常长。根据您服务的请求数量以及您的所有请求是否触发此调用,您所有可用的进程可能只是在等待来自该服务器的响应。
你可以考虑降低这个数字。
curl 也有第二次超时CURLOPT_TIMEOUT
。尝试另外设置它。如果与服务器的连接在 10 秒内完成,然后服务器需要 60 秒来处理您的请求,则当前超时对您没有帮助,因为它只会限制连接时间。
如果您不想依赖 cURL 正在做什么,您还可以使用set_time_limit()为 php 进程本身设置时间限制。如果您将其设置为例如 30 秒,那么无论 cURL 是否完成,php 都会在该时间之后停止执行。这应该在 curl 调用之前完成。
- 1 回答
- 0 关注
- 107 浏览
添加回答
举报
0/150
提交
取消