2

我编写了一个脚本,从网站下载页面列表。我不时收到以下错误(秒数是可变的):

bwshare 模块将在接下来的 7 秒内拒绝您的请求。您下载数据的速度太快了。

我发现在循环中使用 sleep(2) 时效果更好,但是时间延迟太贵了。如何处理这个模块的最佳方法是什么?我是否应该毫不拖延地刮掉它,如果响应类似于上述消息,只需在请求的秒数内使用睡眠?

4

2 回答 2

1

这完全取决于您在错误消息之前可以获得多少页。

尝试测量平均可以获得多少页。

bwshare 消息之前的 4 页是最少的。

如果您在下载 4 页之前收到错误消息,那么每次下载后 il 会 更快地进入 sleep(2)。

于 2012-05-25T12:22:39.647 回答
0

试试这种方式......它可能会帮助你。

  $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);
        }
    }

如果您的问题得到解决,请尝试发布您的答案,以便其他人也可以从中受益

于 2012-06-18T13:33:48.587 回答