## 6 速率限制 请求速率限制,根据api_key或者用户来判断某段时间的请求次数,将该数据更新到内存数据库(redis,memcached),达到最大数即不接受该用户的请求,同时这样还可以利用到内存数据库key在特定时间自动过期的特性。在[php](http://blog.nsfocus.net/tag/php/ "php")中可以使用APC,Alternative[PHP](http://blog.nsfocus.net/tag/php/ "php") Cache (APC) 是一个开放自由的[PHP](http://blog.nsfocus.net/tag/php/ "php") opcode 缓存。它的目标是提供一个自由、 开放,和健全的框架用于缓存和优化[PHP](http://blog.nsfocus.net/tag/php/ "php")的中间代码。在返回时设置X-Rate-Limit-Reset:当前时间段剩余秒数,APC的示例代码如下: 代码。在返回时设置X-Rate-Limit-Reset:当前时间段剩余秒数,APC的示例代码如下: ~~~ Route::filter('api.limit', function() { $key = sprintf('api:%s', Auth::user()->api_key); // Create the key if it doesn't exist Cache::add($key, 0, 60); // Increment by 1 $count = Cache::increment($key); // Fail if hourly requests exceeded if ($count > Config::get('api.requests_per_hour')) { App::abort(403, 'Hourly request limit exceeded'); } }); ~~~