Есть ли способ ограничить доставку страницы в чистом PHP?
Я знаю, что это можно сделать для загружаемого файла, но я искал реализацию для обычных HTML-страниц.
Я искал, возможно, тип заголовка, который можно отправить
header('Throttle:300kb-ps')
Это возможно, если бы вы использовали потоковый API (например, fwrite()
). Затем вы можете зарегистрировать фильтр потока токенов. Я собрал это все для вас в bandwidth-throttle/bandwidth-throttle
:
use bandwidthThrottle\BandwidthThrottle;
$out = fopen("php://output", "w");
$throttle = new BandwidthThrottle();
$throttle->setRate(100, BandwidthThrottle::KIBIBYTES); // Set limit to 100KiB/s
$throttle->throttle($out);
fwrite($out, "<html>Your page</html>");
Посмотри на apache mod_ratelimit если вы хотите «ограничение скорости пропускной способности» страниц. Он работает для каждого запроса, поэтому вам нужно выяснить, кому предназначен запрос, а затем установить лимит по мере необходимости.
Веб-сервер — это место, где вам нужно это делать, вам нужно всего лишь использовать php для управления им.
Кроме того, согласно моему комментарию, если бы это было для API и веб-сервисов, я бы «запросил ограничение скорости» их. Когда они сделали n запросов за последние t секунд, верните Server Busy.
Ограничение пропускной способности эффективно только для больших откликов, например, для килобайт передачи данных. Для небольших ответов, таких как ответы API, это не будет иметь никакого эффекта.