现在很多大型网站(像FB,TWITTER)都 提供 API接口.一般返回格式是JSON. 一般会限制每IP地址访问的频率 比如每小时 600次调用等等.
如果你想提供一个API 但是计算又挺耗时的不想用户频繁的调用,可以通过记录上次调用时间来限制,比如:
$data = "Data Returned from API";
header('Content-Type: application/json');
die(json_encode($data));
然后我们就可以在 session 中记录时间来判断
session_start();
if (isset($_SESSION['LAST_CALL'])) {
$last = strtotime($_SESSION['LAST_CALL']);
$curr = strtotime(date("Y-m-d h:i:s"));
$sec = abs($last - $curr);
if ($sec < = 1) {
$data = 'Rate Limit Exceeded'; // 调用太频繁了
header('Content-Type: application/json');
die (json_encode($data));
}
}
$_SESSION['LAST_CALL'] = date("Y-m-d h:i:s");
// 正常使用
$data = "Data Returned from API";
header('Content-Type: application/json');
die(json_encode($data));
建议把上面的代码 提取到外面单独的一个PHP头文件中然后 放在每个API调用的文件开始 (因为需要初始化 session_start())
require_once('rate.php');
英文:Easy Rate Limit in PHP using Simple Strategy – An API Example
本文一共 157 个汉字, 你数一下对不对.上一篇: PHP shell_exec 的安全风波
下一篇: 在线随机生成用户地址的小工具 Linux - RIG - API
扫描二维码,分享本文到微信朋友圈