Wenxin Yiyan ist eine kostenlose chinesische Haft -API, die von Baidu bereitgestellt wird, mit einem täglichen Antragsbegrenzung von 1.000 Mal. Trotzdem gibt es immer noch viele Anwendungen, die diese Grenze während hoher Frequenzaufrufe durchbrechen, wodurch ein Überlimit auslöst oder vorübergehend blockiert wird.
Eine große Anzahl von Anfragen kann dazu führen, dass der Dienst nicht verfügbar ist und sogar andere Benutzer auf derselben Plattform betrifft. Daher kann die angemessene Begrenzung der Anzahl der Anfragen und des Verkehrs während der Entwicklung die Verfügbarkeit und Stabilität der API effektiv sicherstellen.
In PHP können wir die Antragsfrequenz eines einzelnen Benutzer durch Redis aufzeichnen und beurteilen, um die Anzahl der Anfragen pro Tag zu begrenzen. Hier ist ein typisches Codebeispiel:
// verbindenRedisServer
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
// Benutzern holenIPund aktuelles Datum
$ip = $_SERVER['REMOTE_ADDR'];
$date = date("Y-m-d");
// BauenRedisSchlüsselname
$key = $ip . '-' . $date;
$count = $redis->get($key);
if (!$count) {
// Erste Anfrage,Initialisieren Sie die Anzahl und setzen Sie die Ablaufzeit fest
$redis->set($key, 1);
$redis->expire($key, 86400);
} else {
if ($count >= 1000) {
echo 'Die Anzahl der Anfragen überschritt';
exit;
}
// Erhöhen der Anzahl
$redis->incr($key);
$redis->expire($key, 86400);
}
// Fragen Sie Wen Xin nach einem WortAPI
$url = 'https://v1.alapi.cn/api/shici?format=text';
$response = file_get_contents($url);
echo $response;
Zusätzlich zur aktuellen Grenze in der Anwendungsschicht kann Nginx auch die Anforderungsrate auf der Servicegebühr begrenzen, um den Druck durch kurzfristige hohe Parallelität zu vermeiden. Beispiele sind wie folgt:
http {
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
}
server {
...
location / {
limit_req zone=one burst=5 nodelay;
proxy_pass ...;
}
}
Die obige Konfiguration ist wie folgt:
PHP in Kombination mit Redis für angeforderte Strombegrenzung und Nginx für die Verkehrskontrolle ist ein effektiver Weg, um den stabilen Betrieb der API sicherzustellen. In diesem Artikel wird Baidu Wenxin Yiyan API als Beispiel angelegt und enthält praktische Implementierungscode- und Konfigurationsvorschläge. Ähnliche Praktiken können auch auf andere offene Schnittstellen für Hochfrequenzanrufe angewendet werden, und Entwickler sollten die aktuellen Begrenzungsstrategien entsprechend den Geschäftsanforderungen angemessen einrichten.