Laravel:从Api(URL)获取大数据

问题描述 投票:0回答:1

[Hwllo,请尝试从api中获取15000个对象,我使用了guzzle和file_get_contents,但这需要很长时间,有时页面无法完全加载。

您能帮我解决这个问题吗?

laravel api bigdata
1个回答
0
投票

这里只是一个例子,目的是让您了解我是如何产生这种问题的。

在您的控制器中,应始终对返回的集合进行分页。如下所示

$users = User::all()->paginate(100);

laravel将返回这20个用户以及一些数据,例如下一个url,上一个url,current_page等。这些附加信息很重要,因此您将知道下一个url和上一个url是什么(这些url将在您的api中使用请求);

现在,在获得分页的用户之后,您还需要计算总用户数,并将其与用户一起返回,以便您的前台知道它将显示多少页面。像下面这样

$total_users = User::all()->count();

现在您的最终控制器将如下所示。

public function getUsers() {
    $users = User::all()->paginate(20);
    $total_users = User::all()->count();

    return compact('users', 'total_users');
}

它将返回这些结果。

users    // the 20 users
total_users // the total number of users in your table
currentPage
lastPage
perPage
hasMorePages
url
nextPageUrl
firstItem
lastItem
total
count

因此,每次单击数据表中的页面时,您只需要在api请求中使用下一个nextPageUrl和prevPageUrl作为url。

© www.soinside.com 2019 - 2024. All rights reserved.