задержка сценария для медленных пиявок - PullRequest
0 голосов
/ 08 октября 2009

Я занимаюсь разработкой сайта банка изображений, который будет содержать изображения без лицензионных платежей для загрузки. Я хочу замедлить любого, кто использует бота или кто загружает слишком часто, поэтому у меня ежедневный лимит файлов и я включил переменную sleep в скрипт, который доставляет файлы. Я делаю это, записывая время завершения последней загрузки в базу данных, а затем проверяя истекшее время начала следующей загрузки. Если это меньше, чем N секунд, то я задерживаю загрузку на M секунд, удваивая M при последующих нарушениях. Это работает нормально, пока сценарий не достигнет ограничения времени выполнения сервера.

Моя хостинговая компания подтверждает, что время сна засчитывается во время выполнения.

Я слишком осторожен на стадии разработки?

Любые предложения о том, как обнаружить и замедлить пользователей, которые злоупотребляют сайтом без использования php sleep?

Ответы [ 4 ]

3 голосов
/ 08 октября 2009

Я не думаю, что вы слишком осторожны, но я делаю думаю, что это плохой способ быть осторожным. Если время сна имеет значение для времени выполнения, разве вы не платите за это? Это, вероятно, также учитывает использование процессора и кучу других факторов стоимости. Кроме того, медленное отключение службы не дает вашим пользователям никаких признаков того, что они делают что-то не так, а просто делает вашу службу медленной.

Вам, вероятно, будет лучше, если вы подадите дружеское изображение-сообщение, чтобы человек знал, что происходит, чтобы он мог изменить свое поведение (это особенно хорошо, учитывая, что некоторые люди могут вызвать его случайно при выполнении совершенно невинных действий). Если они настаивают на том, чтобы показывать ваше сообщение более пяти или десяти раз, то это определенно сценарий, поэтому просто перестаньте полностью отвечать на их запросы.

2 голосов
/ 08 октября 2009

Почему бы вам просто не предупредить пользователя о том, что он / она делает "неправильно", и не отобразить ошибку?

Таким образом, пользователь будет знать, что происходит, и может решить исправить поведение. При случайных задержках я подозреваю, что с вашим сервером что-то не так, и, возможно, просто ищу конкурирующее предложение, которое работает более стабильно.

0 голосов
/ 08 октября 2009

Если какая-либо задержка намного превышает время ожидания выполнения скрипта, вы можете полностью заблокировать этого пользователя на некоторое время (24 часа?).

Как вы решаете, кто именно загружает? IP-адрес не является надежным на 100%, поскольку за NAT может находиться несколько человек, которые, кажется, все пришли с одного и того же IP-адреса.

0 голосов
/ 08 октября 2009

Используйте div со счетчиком времени и внедрите этот механизм времени в javascript.example: (www.rapidshare.com). Если время сна считается временем выполнения, это означает, что у вас довольно высокий шанс пересечь время выполнения ограничение.

...