Как можно сделать ограничение кол-ва запросов к php странице к примеру к 3 в 1 сек, и как это лучше реализовать?
P.s Сама страница содержит динамические JSON данные
Ответ
А вы не ограничивайте доступ, просто кэшируйте результат сохраняя его в оперативной памяти, например, в memcached со сроком хранения 3 секунды.
addServer('localhost', 11211);
$json = 'error';
if (!($json = $m->get('json'))) {
if ($m->getResultCode() == Memcached::RES_NOTFOUND) {
// Долго и трудоемко вычисляем JSON
$json = '{...}';
// Устанавливаем значение на 3 секунды
$m->add('json', $json, 3);
}
}
echo $json;
Как только memcached уничтожит ключ json, скрипт не обнаружит его, снова вычислит по динамическому запросу, положит в memcached и отдаст клиенту. В промежутке между этими событиями json будет извлекаться из memcached очень быстро. Тогда вы сможете отдавать произвольное количество запросов, не подвергая нагрузке хранилища, ответственные за генерацию JSON-а. Более того, при возрастании нагрузки вы сможете увеличивать время хранения ключа, а при ее снижении, наоборот, сокращать.
Комментариев нет:
Отправить комментарий