这是问题所在.我无权创建数据库,并且我收到的csv每天都会计入大量数据. (超过20万行)
我必须使内部网上的每个人都可以访问的数据.所以我创建了一个简单的html / PHP页面,它提取所有行并在表格中显示这些信息,每个列上都有一个带有过滤器的简单fgetcsv.
问题是Web浏览器不适合同时显示那么多信息,所以它会让它崩溃或冻结一段时间,而你暂时无法做任何事情.
我想知道是否有人知道如何对页面说“仅加载前100行例如,然后自动创建下一页将加载并显示接下来的100行等”.
我设法只显示前x行,然后当你点击一个按钮时,表格会随着接下来的x行展开,但它们仍会一次全部加载.剩下的y只是隐藏,所以浏览器仍然死亡或冻结.
任何的想法 ?
谢谢
解决方法:
这真是一个通用的分页问题.您的数据是存储在数据库中还是存储在CSV文件中无关紧要.
只需通过查询字符串或URL重写将一些偏移参数传递给PHP脚本,并使用它来仅选择CSV列表的一部分.
像这样:/big-table.PHP?page = 3.
// Getting passed argument.
$pageNumber = (int) $_GET['page'];
// Items per page default.
$itemsPerPage = 100;
// Calculating offset.
$offset = ($pageNumber - 1) * $itemsPerPage;
然后使用$offset和$itemsPerPage通过限制CSV解析循环的范围来仅检索部分CSV文件.
您还可以将每页的项目值作为参数传递给脚本,以便从Web界面控制此值.例如,如果要创建一个下拉菜单,可以选择每页10,50,100项等.
如果你想要它 – 你总是可以使用AJAX动态获取更多项目,它不会真正影响你的分页实现服务器端,只有输出格式(JSON而不是HTML).
当然数据库实现会更快,我建议尽可能选择它.和/或者您可以使用一些缓存层来加快速度.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。