Модуль bwshare и очистка PHP
Я написал скрипт загрузки списка страниц с сайта. Время от времени я получаю следующую ошибку (количество секунд является переменным):
Модуль bwshare отклонит ваши запросы в течение следующих 7 секунд. Вы загрузили данные слишком быстро.
Я обнаружил, что при использовании sleep(2) в цикле, он работает намного лучше, однако задержка слишком дорогая. Как лучше всего обращаться с этим модулем? Должен ли я очистить его без каких-либо задержек, и если ответ будет аналогичен приведенному выше сообщению, просто используйте sleep для запрошенного количества секунд?
2 ответа
Все зависит от того, сколько страниц вы можете получить до появления сообщения об ошибке.
Попробуйте измерить, сколько страниц в среднем вы можете получить.
4 страницы перед сообщением bwshare - это минимум.
Если вы получаете сообщение об ошибке до достижения 4-страничных загрузок, то il будет быстрее спать (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);
}
}
если ваша проблема решена, попробуйте опубликовать свой ответ, чтобы другие люди также могли получить пользу