Wenxin Yiyan은 Baidu가 제공하는 무료 중국 문장 API이며 일일 요청 한도는 1,000 배입니다. 그럼에도 불구하고, 고주파 호출 중에이 한도를 뚫는 경향이있는 많은 응용 프로그램이 있으며, 과도한 제한을 일으키거나 일시적으로 차단됩니다.
많은 수의 요청을 자주 또는 파열 시키면 서비스를 사용할 수 없게 만들 수 있으며 동일한 플랫폼의 다른 사용자에게도 영향을 줄 수도 있습니다. 따라서 개발 중 요청 수와 트래픽을 합리적으로 제한하면 API의 가용성과 안정성을 효과적으로 보장 할 수 있습니다.
PHP에서는 Redis를 통해 단일 사용자의 요청 빈도를 기록하고 판단하여 하루에 요청 수를 제한 할 수 있습니다. 다음은 일반적인 코드 예입니다.
// 연결하다Redis섬기는 사람
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// 사용자를 얻으십시오IP그리고 현재 날짜
$ip = $_SERVER['REMOTE_ADDR'];
$date = date("Y-m-d");
// 짓다Redis키 이름
$key = $ip . '-' . $date;
$count = $redis->get($key);
if (!$count) {
// 첫 번째 요청,수를 초기화하고 만료 시간을 설정하십시오
$redis->set($key, 1);
$redis->expire($key, 86400);
} else {
if ($count >= 1000) {
echo '요청 수가 초과되었습니다';
exit;
}
// 카운트 증가
$redis->incr($key);
$redis->expire($key, 86400);
}
// Wen Xin에게 한 마디에게 물어보십시오API
$url = 'https://v1.alapi.cn/api/shici?format=text';
$response = file_get_contents($url);
echo $response;
응용 프로그램 계층의 전류 한계 외에도 Nginx는 단기 높은 동시성으로 인한 압력을 피하기 위해 서비스 계층의 요청 속도를 제한 할 수 있습니다. 예는 다음과 같습니다.
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
}
server {
...
location / {
limit_req zone=one burst=5 nodelay;
proxy_pass ...;
}
}
위 구성은 다음과 같습니다.
PHP는 요청 된 전류 제한을 위해 REDIS와 결합하고 교통 통제를위한 NGINX는 API의 안정적인 작동을 보장하는 효과적인 방법입니다. 이 기사는 Baidu Wenxin Yiyan API를 예제로 받아들이고 실제 구현 코드 및 구성 제안을 제공합니다. 고주파 통화를 위해 다른 열린 인터페이스에도 비슷한 관행을 적용 할 수 있으며, 개발자는 비즈니스 요구에 따라 현재 제한 전략을 합리적으로 설정해야합니다.