Я пытался понять это:
Я создаю сайт с файловым хостингом на PHP, и я хотел бы знать, как ограничить пользователя пропускной способностью 10 ГБ в день, чтобы они могли загружать - точно так же, как RapidShare, до истечения срока их сеанса. Затем им будет возвращено 25 ГБ.
Какой тип ограничения я могу использовать для отслеживания сеанса загрузки (включая возобновление) их файла?
Я знаю, что мне нужно что-то сделать с данными фрагментов или с общим количеством завершенных фрагментов, а затем я могу рассчитать их общее количество фрагментов.
Если вы хотите создать сайт для размещения файлов с таким ограничением, я бы сказал, что вам понадобится определенный PHP-скрипт для обслуживания файлов для загрузки, как говорит incrediman. Если вы не новичок в PHP и веб-разработке, я также рекомендую вам ознакомиться с этой статьей: http://onlamp.com/pub/a/php/2000/09/15/php_mysql.html
В конце концов, однако, основная идея состоит в том, что конечные пользователи всегда будут посещать один и тот же сценарий (допустим, вы назвали его «download.php»), и вы использовали бы что-то вроде строки запроса, чтобы динамически выбирать, какой контент обслуживается. Таким образом, чтобы загрузить файл, подобный 'lenna.jpg', они должны посетить URL-адрес, подобный «www.yoursite.ex / download.php? File = lenna.jpg».
Поскольку при этом вы сможете централизовать загрузку в одном месте / скрипте (это называется Информационный эксперт Паттерн / принцип) у вас также есть центральное место для регистрации того, сколько пользователь загрузил во время своего сеанса (PHP встроил поддержку упрощенной информации о сеансе ... см. http://php.net/manual/en/features.sessions.php) и центральное место, чтобы заблокировать их, как только они скачали достаточно.
Вы можете хранить идентификаторы сеансов пользователей в базе данных вместе с объемом данных, которые они загрузили. Каждый раз, когда они загружают файл, проверяйте, current_usage + size_of_file < 100mb
. Если это так, разрешите загрузку, в противном случае отобразите ошибку. Каждый день сбрасывать все current_usage
к 0
.
Кроме того, вы должны знать, что вы можете использовать php для инициирования загрузки, что вам следует делать, если вы хотите отслеживать загрузки. Если вы просто сделаете ссылку на файл, это не сработает. Поэтому используйте сценарий, чтобы инициировать загрузку, и таким образом увеличивайте их количество загрузок.
Дополнительная информация об использовании скрипта для инициации загрузки: http://www.ryboe.com/tutorials/php-headers-force-download