Мы используем Google Shortener в наших проектах, похоже, у Google есть два ограничения:
В 11:00 утра у нас есть задание cron, которое запускает код и требует короткого замыкания около 15 000 URL,
Вчера мы использовали только одну клавишу, но сегодня мы добавляем 6 ключей, чтобы обойти это ограничение, и каждую минуту используем одну из них со следующим кодом
$googleAPIKeys = [
'KEY1CODE',
'KEY2CODE',
'KEY3CODE',
'KEY4CODE',
'KEY5CODE',
'KEY6CODE'
];
$roundRobinKey = date('i') % count($googleAPIKeys);
try {
$req = $client->post('https://www.googleapis.com/urlshortener/v1/url?key=' . $googleAPIKeys[$roundRobinKey], [
'json' => [
'longUrl' => $url
]
]);
} catch (ClientException $e) {
return $url;
}
$result = json_decode($req->getBody()->getContents());
Но все же столкнулся с 403 (ограничения превышают)
кажется странным, почему это происходит? Какое истинное ограничение укороченного сервиса Google?
как я могу обойти это ограничение?
Еще одна заметка: в сценарии с одним ключом, если вы превышаете ограничение (100 на 100 секунд), если вы пытаетесь использовать этот ключ снова через 5 минут, все еще сталкиваясь с проблемой 403 ограничения превышения !!!
похоже гугл ограничения не такие как сказали !!!
Обновить
После прочтения Стандартные параметры запроса а также Ограничение использования API
Я изменил свой запрос на следующий
$req = $client->post('https://www.googleapis.com/urlshortener/v1/url?quotaUser=' . $userID . '&key=' . $myKey, [
'json' => [
'longUrl' => $url
]
]);
Который userID
уникальный идентификатор пользователя на запрос (потому что мы генерируем каждый URL для каждого пользователя). но все еще сталкиваюсь с 403 !!!
Любая идея?
Ограничение будет основано на проектах и пользователях. однако он также может быть основан на IP.
работать вокруг
Обратите внимание, что время, которое вы заблокированы, должно составлять около часа.
quotaUser Альтернатива userIp. Позволяет применять квоты для каждого пользователя
из серверного приложения даже в случаях, когда IP пользователя
адрес неизвестен. Это может произойти, например, с приложениями
которые запускают задания cron в App Engine от имени пользователя. Ты можешь выбрать
любая произвольная строка, которая однозначно идентифицирует пользователя, но это
ограничено до 40 символов. Переопределяет userIp, если оба предоставлены. Учить
больше об использовании Capping API.
Вы добавляете это как дополнительный параметр в свой запрос
quotaUser=xxxx
Других решений пока нет …