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,只需向服务器发送另一个请求并让它调用执行以下操作的函数:
>计算数据库中的总行数 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),所以我相信这会起作用! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |