使用Redis和PHP进行分页

时间:2016-06-08 07:34:35

标签: javascript php angularjs redis

我正在开发一个项目,我需要在记录提取上执行分页。任何人都可以帮助我以有效的方式完成工作。

请指导我哪种方式最好: 1)在页面上加载获取完整记录并将其发送到前端并在请求新页面时显示记录。 (在这里,我觉得这将耗费大量时间,并使应用程序在用户身上沉重)

2)ON页面加载从服务器获取记录并创建一个虚拟表或说数组来存储提取的详细信息。现在将响应从此数组发送到请求页面。(这里仅在第一次加载页面时它将调用服务器而休息所有页面点击将从作为页面加载结果创建的虚拟表中获取) 但我担心如何维护虚拟表或阵列,因为系统是基于Web的,并且多个用户将一次进行交互。

请帮我继续正确的方式。如果你有更好的方法,请告诉我。

提前谢谢你。

1 个答案:

答案 0 :(得分:0)

加载完整记录不是好习惯。您可以通过以下方式使用分页

前端

前端的

处理发送给控制器的请求。

var data = {'offset': offset};
        var url = "http://localhost/project/controller/listData";
        $http.post(url, $.param(data), config).then(function (data) {
               if (data.data.Code == '200') { // if query returned some data
                for (var i in data.data.result) {
                    $scope.dataSet.push(data.data.result[i]);
                }
                offset += 5;

            }

        }, function (error) {
            console.log("error");

        });

PHP

从数据库中获取数据时,控制器方法中的

使用限制和偏移

public function listData()
{
    $offset = $this->input->post('offset');

    $query = $this->db->get('dataTable', 5, $offset);

    if ($query->num_rows() > 0) {
        $result = $query->result_array();

        $response = array(
            'Code' => '200',
            'Message' => 'Success!!!',
            'result' => $result
        );
        echo json_encode($response);
    } else {
        $response = array(
            'Code' => '203',
            'Message' => 'no data fetched!!',
        );
        echo json_encode($response);
    }

}

P.S 我的建议是使用无限卷轴进行分页,有很多例子可以尝试一些。