如何限制API调用?

时间:2010-10-20 04:34:18

标签: php api

http://blog.programmableweb.com/2007/04/02/12-ways-to-limit-an-api/读取它我想知道如何完成基于时间的限制(即每秒1次呼叫)。那么,如果需要身份验证,那么方法是比较PHP的时间函数跟踪的秒数(例如,if ($previous_call_time == $current_call_time) { ... })?还有其他建议吗?

3 个答案:

答案 0 :(得分:4)

使用简单的缓存:

if(filemtime("cache.txt") < (int)$_SERVER["REQUEST_TIME"] - 3600) { // 3600 is one hour in seconds
    $data = file_get_contents("http://remote.api/url/goes/here");
    file_put_contents("cache.txt", $data);
} else
    $data = file_get_contents("cache.txt");

这样的内容可以节省API的价值,让您随时随地获取信息,同时仍限制实际从Feed中提取日期的频率。

希望这有帮助!

答案 1 :(得分:1)

更一般的限制标准是“每个'期间的呼叫次数'”。例如 - 每小时,就像推特一样。

您可以通过向每个请求的mysql添加记录来跟踪当前执行的请求数。

这种方式更高效的解决方案是使用memcached并增加“key”(user_id + current_hour)。

答案 2 :(得分:-1)

需要考虑的事项:您可以使用外部服务来执行此操作,而不是自己构建它。例如。我的公司WebServius(http://www.webservius.com)目前支持可配置的每个API和每个API密钥限制,我们可能会添加更多功能,例如“自适应限制”(当API变得更少时自动限制使用响应)。