現在の位置: ホーム> 最新記事一覧> Wenxin Yiyan APIを実装するためのPHPの効率的な電流制限およびフロー制御方法

Wenxin Yiyan APIを実装するためのPHPの効率的な電流制限およびフロー制御方法

gitbox 2025-06-15

Wenxin Yiyan APIとは何ですか?

Wenxin Yiyanは、Baiduが提供する無料の中国の文APIであり、1,000回のリクエスト制限があります。それにもかかわらず、高周波の呼び出し中にこの制限を突破する傾向がある多くのアプリケーションがまだあります。

API要求の現在のフローを制限および制御する必要があるのはなぜですか?

頻繁にまたは多数のリクエストを破裂させると、サービスが利用できなくなり、同じプラットフォーム上の他のユーザーに影響を与える可能性があります。したがって、開発中の要求とトラフィックの数を合理的に制限すると、APIの可用性と安定性が効果的に保証されます。

PHPを介してインターフェイスの電流制限とフロー制御を実装する方法

Redisを使用して、リクエスト電流制限を実装します

PHPでは、1日あたりのリクエスト数を制限するために、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を使用します

アプリケーションレイヤーの電流制限に加えて、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 ...;
    }
}

上記の構成は次のとおりです。

  • レート= 1R/s :1秒あたりのIPごとに1回のみのリクエスト
  • バースト= 5 :最大5つのリクエストバックログを許可します
  • Nodelay :直接処理されるのを待っていません

要約します

要求された電流制限のためにRedisと組み合わせたPHPとトラフィックコントロールのNginxは、APIの安定した動作を確保するための効果的な方法です。この記事では、Baidu Wenxin Yiyan APIを例として取り上げ、実用的な実装コードと構成の提案を提供します。同様のプラクティスも、高周波コールのために他のオープンインターフェイスに適用することができ、開発者はビジネスニーズに応じて現在の制限戦略を合理的に設定する必要があります。