如何解决节流方法cURL
我正在使用api开发项目,我的订阅每秒允许我2个请求。
此API使您可以查找与另一个单词相关的单词。
我的项目是递归使用此API。 单词A给出单词B和C 单词B和C在用户指定的限制内递归给出2个单词,等等。
我将每个单词存储在一个“单词”对象中。在此对象的__construct中,我调用了调用此API的函数,该函数将每个结果转换为一个新对象。
一切正常,唯一需要注意的是,当指定的递归层太高时,即使我的计时器为0.5秒,API也不会返回任何内容。
所以我建立了一个循环。只要对我的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);
}
我认为我的限制方法是错误的。你能给我一些建议吗?
解决方法
如您在sleep documentation中所见,它需要一个整数。
您发送一个浮点数0.6,然后强制转换为整数值0。
所以你的睡眠电话变成了:
sleep(0)
如果需要更高的精度,则需要使用usleep(int microseconds)。
usleep(600)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。