我编写了一个脚本,从网站下载页面列表。我不时收到以下错误(秒数是可变的):
bwshare 模块将在接下来的 7 秒内拒绝您的请求。您下载数据的速度太快了。
我发现在循环中使用 sleep(2) 时效果更好,但是时间延迟太贵了。如何处理这个模块的最佳方法是什么?我是否应该毫不拖延地刮掉它,如果响应类似于上述消息,只需在请求的秒数内使用睡眠?
我编写了一个脚本,从网站下载页面列表。我不时收到以下错误(秒数是可变的):
bwshare 模块将在接下来的 7 秒内拒绝您的请求。您下载数据的速度太快了。
我发现在循环中使用 sleep(2) 时效果更好,但是时间延迟太贵了。如何处理这个模块的最佳方法是什么?我是否应该毫不拖延地刮掉它,如果响应类似于上述消息,只需在请求的秒数内使用睡眠?
这完全取决于您在错误消息之前可以获得多少页。
尝试测量平均可以获得多少页。
bwshare 消息之前的 4 页是最少的。
如果您在下载 4 页之前收到错误消息,那么每次下载后 il 会 更快地进入 sleep(2)。
试试这种方式......它可能会帮助你。
$requestTime = 0.1; // s/connection
foreach(/* blah */) {
$start = microtime(true);
// Do your stuff to here.. get_file_content($url) and other processing .........
if($timeTaken = microtime(true)-$start < $requestTime) {
usleep(($requestTime-$timeTaken)*1000000);
}
}
如果您的问题得到解决,请尝试发布您的答案,以便其他人也可以从中受益