节流方法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)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...