【发布时间】:2020-12-03 07:24:14
【问题描述】:
我正在使用 api 开发一个项目,我的订阅允许我每秒 2 个请求。
此 API 允许您查找与另一个单词相关的单词。
我的项目是递归使用这个 API。 单词 A 给出单词 B 和 C 单词 B 和 C 分别给出 2 个单词,等等,递归地,在用户指定的限制上。
我将每个单词存储在一个“单词”对象中。在这个对象的 __construct 中,我调用了调用这个 API 的函数,它将每个结果转换为一个新的对象。
一切正常,唯一担心的是,当指定的递归层太高时,API 不会返回任何内容,即使我有一个 0.5 秒的计时器。
所以我设置了一个循环。只要对我的 cURL 请求的响应不是 200,我就会重播它,计时器为 0.5 秒。
$a = 200;
$httpcode = 0;
while ($httpcode !== $a) {
$postRequest = [
'content' => $this->getMot(),
'lang' => 'fr',
'limit' => $this->getLimite(),
'key' => "//////////////////////"
];
$cURLConnection = curl_init('https://api.keywords.gg/entities');
curl_setopt($cURLConnection, CURLOPT_HTTPHEADER,
['Content-Type: application/json']);
curl_setopt($cURLConnection, CURLOPT_POSTFIELDS, json_encode($postRequest));
curl_setopt($cURLConnection, CURLOPT_RETURNTRANSFER, true);
$apiResponse = curl_exec($cURLConnection);
$httpcode = curl_getinfo($cURLConnection, CURLINFO_HTTP_CODE);
$apiResponse = curl_exec($cURLConnection);
curl_close($cURLConnection);
}
我认为我的节流方法是错误的。你能给我一些建议吗?
【问题讨论】:
-
在此处发布您的实际代码,而不是您的代码图片。
-
代码图像不利于可访问性,不利于搜索,并且无法复制代码以运行它以查找任何错误。
标签: php curl throttling