加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 显示大量数据的最佳方式

发布时间:2020-12-13 21:46:18 所属栏目:PHP教程 来源:网络整理
导读:在网页上处理大量数据条目的最佳方法是什么? 假设我在一个包含song_name,author_name,song_id,posted_by的表上有5000条记录的数据库;我想在一个页面上构建一个包含所有歌曲的播放列表.此页面上还有一个播放器根据页面上显示的播放列表条目播放歌曲. 我试图
在网页上处理大量数据条目的最佳方法是什么?
假设我在一个包含song_name,author_name,song_id,posted_by的表上有5000条记录的数据库;我想在一个页面上构建一个包含所有歌曲的播放列表.此页面上还有一个播放器根据页面上显示的播放列表条目播放歌曲.
我试图从该表中提取所有5000个条目并使用它们构建一个 javascript对象,并处理该对象我已经构建了播放列表,在播放列表中搜索,等等.但是这需要非常大量的资源(不是用户端)和大量的页面加载时间(因为有很多条目!)并且页面非常慢.
是否最好将所有数据加载到一个对象中,并通过 JavaScript对每100个播放列表记录进行分页,或者更好地从数据库中分页结果并更新播放列表? (这考虑到这样一个事实,即如果玩家已经激活了随机播放按钮,它可以随机播放到用户数据库中的任何歌曲,而不仅仅是来自可见播放列表的当前歌曲)

解决方法

我认为分页是你最好的选择.只需创建一个100的限制(例如)并使用AJAX提取下一个100.如果客户端打开shuffle,只需向服务器发送另一个请求并让它调用执行以下操作的函数:

>计算数据库中的总行数
>使用randomize函数获取100个随机数
>现在创建一个稍微棘手的查询来从基于数据库的记录中获取记录
在他们的rownumber上:

function getRandomTracks($limit){

$total = $this->db->count_all('table_tracks');

  //Get random values. Speed optimization by predetermine random rownumbers using php

  $arr = array();
  while (count($arr) < $limit) { 
    $x = mt_rand(0,$total); //get random value between limit and 0
    if (!isset($arr[$x])) { //Random value must be unique
      //using random value as key and check using isset is faster then in_array
      $arr[$x] = true; 
    }
  }

  //Create IN string
  $in = implode(',',array_keys($arr));

  //Selection based on random rownumbers
  $query = $this->db->query('SELECT * FROM
      (SELECT  @row := @row + 1 as row,t.*
         FROM `table_tracks` t,(SELECT @row := 0) r) AS tracks
     WHERE `row` IN(' . $in . ')');

  return $query->result();

}

我正在使用类似的功能,也会处理大量的曲目(超过300.000),所以我相信这会起作用!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读