Php 如何在Laravel 8中加快阵列构建速度?

Php 如何在Laravel 8中加快阵列构建速度?,php,arrays,laravel,api,httprequest,Php,Arrays,Laravel,Api,Httprequest,好吧,让我们这样说 我向一家诊所服务提出api请求,数据如下: { "count": 693, "next": "http://labprot.com/api/lab/prescriptions?page=2&phase=3", "previous": null, "results": [ HERE IT COMES DATA ALOT OF IT ] }

好吧,让我们这样说

我向一家诊所服务提出api请求,数据如下:

{
    "count": 693,
    "next": "http://labprot.com/api/lab/prescriptions?page=2&phase=3",
    "previous": null,
    "results": [ HERE IT COMES DATA ALOT OF IT ]
}
问题是我需要在do循环中运行相同的请求,而要检索所有693条bcs记录,每个页面上只有10条。我用的是下一个,像这样:

        $array = array();
        
        $client = new Client(); //using GuzzleHttp\Client;
       
        $request = $client->get('https://labprot.com/api/lab/prescriptions?phase=3',[
            'verify' => false,
            //some headers
        ]);

        $reponse = json_decode($request->getBody()->getContents());

        foreach($reponse->results as $item){
            $array[]=$item;
        }

        do{
           $request = $client->get($reponse->next,[
            'verify' => false,
             //some headers
            ]);
    
            $reponse = json_decode($request->getBody()->getContents());
    
            foreach($reponse->results as $item){
                $array[]=$item;
            }
            
        }while($reponse->next != null);

这个循环在我的控制器中,大约需要40秒来完成包含所有信息的数组

其中最耗时的部分可能是HTTP请求。Guzzle有一种并行执行多个请求的方法,因此您可以在前面创建两个URL(下一组数据的URL看起来没有任何魔力,只是
页面
参数会增加?),但这可能意味着您将使两个URL变得“毫无意义”以这种或那种方式请求,因为这样您就无法对
下一个
URL丢失做出反应。尽管如此,您还是可以分10或50块来完成这项工作。不过,您是否首先检查了API文档,它是否没有提供任何参数来指定一个请求返回多少个结果?它们通常提供
限制
参数或类似参数,因此,这里可能只是处理一个隐式默认值10。是否考虑缓存这些响应?我正在尝试与API的负责人交谈,以获得获取DB中所有可用记录所需的路径,但我没有找到Anwser。我想我需要等待一段时间more@BallardI我得到了所有的回应,但我不想这样做,因为它花费了很多时间,其他人无法访问它的bcs网站,它封锁了大约40秒的所有网站。只要这样做,我就可以在一次打击中得到所有,我可以用它做任何我想做的事情,并且不再有这些愚蠢的问题。