繁体   English   中英

如何在目标 URL 无响应时删除 PHP cURL 请求?

[英]How to drop PHP cURL request when target URL is unresponsive?

我有一个共享主机的网站, 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 选项,但似乎都没有工作。

10 秒的超时时间很长。 根据您服务的请求数量以及您的所有请求是否触发此调用,您所有可用的进程可能只是在等待来自该服务器的答复。

你可以考虑降低这个数字。

curl CURLOPT_TIMEOUT还有第二次超时。 尝试另外设置。 如果与服务器的连接在 10 秒内完成,然后服务器需要 60 秒来处理您的请求,则当前超时对您没有帮助,因为它仅限制了连接时间。

如果您不想依赖 cURL 正在做什么,您还可以使用set_time_limit()为 php 进程本身设置时间限制。 如果您将其设置为例如 30 秒,那么无论 cURL 是否已完成,php 都会在该时间之后停止执行。 这应该在 curl 调用之前完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM