Position actuelle: Accueil> Derniers articles> Méthode de limitation et de contrôle de flux efficace pour PHP pour implémenter l'API Wenxin Yiyan

Méthode de limitation et de contrôle de flux efficace pour PHP pour implémenter l'API Wenxin Yiyan

gitbox 2025-06-15

Qu'est-ce que l'API Wenxin Yiyan?

Wenxin Yiyan est une API de phrase chinoise gratuite fournie par Baidu, avec une limite de demande quotidienne de 1 000 fois. Néanmoins, il existe encore de nombreuses applications qui ont tendance à franchir cette limite lors d'appels à haute fréquence, déclenchant une limite ou être temporairement bloquée.

Pourquoi devons-nous limiter et contrôler le flux actuel des demandes d'API?

Un grand nombre de demandes fréquentes ou éclatées peuvent rendre le service indisponible et peut même affecter les autres utilisateurs sur la même plate-forme. Par conséquent, il peut raisonnablement limiter le nombre de demandes et de trafic pendant le développement peut assurer efficacement la disponibilité et la stabilité de l'API.

Comment implémenter la limite de courant de l'interface et le contrôle du flux via PHP

Utiliser Redis pour implémenter la limite actuelle de la demande

Dans PHP, nous pouvons enregistrer et juger la fréquence de demande d'un seul utilisateur via Redis pour limiter le nombre de demandes par jour. Voici un exemple de code typique:

 
// connecterRedisserveur
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);

// Obtenir des utilisateursIPet date actuelle
$ip = $_SERVER['REMOTE_ADDR'];
$date = date("Y-m-d");

// ConstruireRedisNom de clé
$key = $ip . '-' . $date;
$count = $redis->get($key);

if (!$count) {
    // Première demande,Initialiser le nombre et définir le temps d'expiration
    $redis->set($key, 1);
    $redis->expire($key, 86400);
} else {
    if ($count >= 1000) {
        echo 'Le nombre de demandes dépassées';
        exit;
    }
    // Augmenter le décompte
    $redis->incr($key);
    $redis->expire($key, 86400);
}

// Demandez à Wen Xin un motAPI
$url = 'https://v1.alapi.cn/api/shici?format=text';
$response = file_get_contents($url);
echo $response;

Utiliser Nginx pour le contrôle du trafic

En plus de la limite actuelle de la couche d'application, Nginx peut également limiter le taux de demande au niveau de la couche de service pour éviter la pression causée par une concurrence à court terme. Les exemples sont les suivants:

 
http {
    limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
}

server {
    ...
    location / {
        limit_req zone=one burst=5 nodelay;
        proxy_pass ...;
    }
}

La configuration ci-dessus est la suivante:

  • Taux = 1r / s : une seule fois une demande par IP par seconde
  • Burst = 5 : Accordez jusqu'à 5 demandes Backlog
  • nodelay : pas d'attente d'être traité directement

Résumer

PHP combiné avec Redis pour la limitation du courant demandé et Nginx pour le contrôle du trafic est un moyen efficace d'assurer le fonctionnement stable de l'API. Cet article prend l'API Baidu Wenxin Yiyan comme exemple et fournit des suggestions de code d'implémentation et de configuration pratiques. Des pratiques similaires peuvent également être appliquées à d'autres interfaces ouvertes pour les appels à haute fréquence, et les développeurs devraient mettre en place des stratégies de limitation actuelles raisonnablement en fonction des besoins de l'entreprise.