如何在目标 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 选项,但 none 似乎有效。
10 秒超时时间很长。根据您服务的请求数量以及如果您的所有请求都触发此调用,您所有可用的进程可能只是在等待来自该服务器的答复。
你可以考虑降低这个数字。
curl CURLOPT_TIMEOUT
还有第二次超时。尝试另外设置它。如果与服务器的连接在 10 秒内完成,然后服务器需要 60 秒来满足您的请求,则当前超时对您没有帮助,因为它仅限制连接时间。
如果您不想依赖于 cURL 正在做什么,您还可以使用 set_time_limit() 为 php 进程本身设置一个时间限制。如果您将其设置为 e。 G。 30 秒,php 将在该时间之后停止执行,无论 cURL 是否完成。这应该在 curl 调用之前完成。
我在共享主机中有一个网站,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 选项,但 none 似乎有效。
10 秒超时时间很长。根据您服务的请求数量以及如果您的所有请求都触发此调用,您所有可用的进程可能只是在等待来自该服务器的答复。
你可以考虑降低这个数字。
curl CURLOPT_TIMEOUT
还有第二次超时。尝试另外设置它。如果与服务器的连接在 10 秒内完成,然后服务器需要 60 秒来满足您的请求,则当前超时对您没有帮助,因为它仅限制连接时间。
如果您不想依赖于 cURL 正在做什么,您还可以使用 set_time_limit() 为 php 进程本身设置一个时间限制。如果您将其设置为 e。 G。 30 秒,php 将在该时间之后停止执行,无论 cURL 是否完成。这应该在 curl 调用之前完成。