Translate APIを使用してページ内の一部のテキストを翻訳していますが、これらのテキストは大きなhtml形式のテキストであるため、5000の制限を回避するために、これらのテキストを4500文字(htmlタグを含む)未満の小さな部分に分割する関数を開発する必要がありました。リクエストごとの文字数。また、POST経由でリクエストを送信できるようにGoogle PHP APIを変更する必要がありました。
Goole Developers Consoleで有料バージョンのAPIを有効にし、合計割り当てを1日あたり5,000万文字、500リクエスト/秒/ urserに変更しました。
現在、テキストのデータベース全体をスクリプトで翻訳していますが、正常に機能しますが、ランダムな時点で「(403)User Rate Limit Exceeded」というエラーが復活し、スクリプトを再実行するまで数分待つ必要があります。エラーに達したapiは、しばらく待つまで同じエラーを何度も返します。
リクエストの数を渡さないと、なぜエラーが返され続けるのかわかりません。時間の間隔ごとに、ある種の最大の特性があるようです...
以前に設定した割り当て制限を超えている可能性があります。これは、1日の請求可能額、または1秒あたりのリクエスト文字数の制限です。
使用制限を変更したり、割り当ての増加をリクエストしたりするには、次の手順を実行します。1。Google Developers Console " https://console.developers.google.com/ "に移動します。 2.プロジェクトを選択します。 3.左側のサイドバーで、[APIと認証]を展開します。 4. [API]をクリックします。 5.関心のあるアクティブ化されたAPIの名前「つまりTranslateAPI」をクリックします。 6. APIの情報ページの上部にある[クォータ]をクリックします。
請求を有効にしている場合は、[割り当て]をクリックするだけで、割り当てページが表示され、割り当て関連の設定を表示および変更できます。
そうでない場合は、[クォータ]をクリックすると、TranslateAPIに適用される無料のクォータと制限に関する情報が表示されます。
Google Developer Consoleには、変更した設定や制限に関係なく、1秒あたり10リクエストのレート制限があります。
この制限を超えている可能性があります。
これに関するドキュメントは見つかりませんでしたが、さまざまなAPIリクエストで自分で確認できました。
リファラーヘッダーはデフォルトでは設定されていませんが、次のようにリクエストにヘッダーを追加することができます。
$result = $t->translate('Hola Mundo', [
'restOptions' => [
'headers' => [
'referer' => 'https://your-uri.com'
]
]
]);
クライアントレベルでリファラーを設定する方が理にかなっている場合(クライアントを流れるすべてのリクエストがヘッダーを受信するように)、これも可能です。
$client = new TranslateClient([
'key' => 'my-api-key',
'restOptions' => [
'headers' => [
'referer' => 'https://your-uri.com'
]
]
]);
これは私のために働いた!
[参照] https://github.com/googleapis/google-cloud-php/issues/48
文字の制限は制御しますが、並行性は制御しません
1秒あたり500を超える同時リクエストを行っているか、そのような同時実行制限に達している別のGoogleAPIを使用しています。