如何优化循环,使用 lumen 从另一个 API 获取数据
How to optimaze looping , get data from another API with lumen
当我使用 guzzle 获取连接到数据的数据成员时,数据内容太重了,同一个人可以告诉我如何解决吗?
$getNewest=$this->Get(env('TestUrl').'listcast');
if (!empty($getNewest['DATA'])) {
foreach ($getNewest['DATA'] as $data)
{
$client = New CLient();
$reqGet = $client->get(env('MemberUrl').'user-token-member/'.$data['member_id']);
$resGet = json_decode($reqGet->getBody(),true);
$array['id']=$data['id'];
$array['title']=$data['title'];
$array['member_name'] =$resGet['DATA']['FIRSTNAME']." ".$resGet['DATA']['LASTNAME'];
$array['avatar'] = $resGet['DATA']['MEMBER_IMAGE'];
$array['desc'] = $data['desc'];
$newest[] = $array;
}
} else {
$newest = array();
}
我不知道速度慢的确切原因,但是您应该对代码进行一些修改。
- 不要在代码中使用
env()
。而是在配置文件夹中定义一个配置文件,例如 connection.php 并在其中设置您的配置,因为配置文件将通过 laravel 缓存在您的生产服务器中。您可以通过 运行 php artisan config:cache
缓存配置
例如config/connection.php
<?php
return [
'test_url'=>env('TestUrl'),
'member_url'=>env('MemberUrl'),
];
- 不需要在
foreach
的每次迭代中都创建Clientclass的新对象。你把它放在循环之外。
$getNewest=$this->Get(config('connection.test_url').'listcast');
if (!empty($getNewest['DATA'])) {
$client = New CLient();
foreach ($getNewest['DATA'] as $data){
$reqGet = $client->get(config('connection.member_url').'user-token-member/'.$data['member_id']);
$resGet = json_decode($reqGet->getBody(),true);
$array['id']=$data['id'];
$array['title']=$data['title'];
$array['member_name'] =$resGet['DATA']['FIRSTNAME']." ".$resGet['DATA']['LASTNAME'];
$array['avatar'] = $resGet['DATA']['MEMBER_IMAGE'];
$array['desc'] = $data['desc'];
$newest[] = $array;
}
} else {
$newest = array();
}
当我使用 guzzle 获取连接到数据的数据成员时,数据内容太重了,同一个人可以告诉我如何解决吗?
$getNewest=$this->Get(env('TestUrl').'listcast');
if (!empty($getNewest['DATA'])) {
foreach ($getNewest['DATA'] as $data)
{
$client = New CLient();
$reqGet = $client->get(env('MemberUrl').'user-token-member/'.$data['member_id']);
$resGet = json_decode($reqGet->getBody(),true);
$array['id']=$data['id'];
$array['title']=$data['title'];
$array['member_name'] =$resGet['DATA']['FIRSTNAME']." ".$resGet['DATA']['LASTNAME'];
$array['avatar'] = $resGet['DATA']['MEMBER_IMAGE'];
$array['desc'] = $data['desc'];
$newest[] = $array;
}
} else {
$newest = array();
}
我不知道速度慢的确切原因,但是您应该对代码进行一些修改。
- 不要在代码中使用
env()
。而是在配置文件夹中定义一个配置文件,例如 connection.php 并在其中设置您的配置,因为配置文件将通过 laravel 缓存在您的生产服务器中。您可以通过 运行php artisan config:cache
缓存配置 例如config/connection.php
<?php
return [
'test_url'=>env('TestUrl'),
'member_url'=>env('MemberUrl'),
];
- 不需要在
foreach
的每次迭代中都创建Clientclass的新对象。你把它放在循环之外。
$getNewest=$this->Get(config('connection.test_url').'listcast');
if (!empty($getNewest['DATA'])) {
$client = New CLient();
foreach ($getNewest['DATA'] as $data){
$reqGet = $client->get(config('connection.member_url').'user-token-member/'.$data['member_id']);
$resGet = json_decode($reqGet->getBody(),true);
$array['id']=$data['id'];
$array['title']=$data['title'];
$array['member_name'] =$resGet['DATA']['FIRSTNAME']." ".$resGet['DATA']['LASTNAME'];
$array['avatar'] = $resGet['DATA']['MEMBER_IMAGE'];
$array['desc'] = $data['desc'];
$newest[] = $array;
}
} else {
$newest = array();
}