【问题标题】:Loading fetched rows into php array将获取的行加载到 php 数组中
【发布时间】:2016-10-02 19:51:00
【问题描述】:

下面我尝试在页面加载时发送 ajax 请求以获取给定表中 productID 和 productName 的结果。大约有 50k 行要提取,由于服务器端(php)上数组的组织和处理,我遇到了一些时间延迟问题。查看下面的代码,我可以毫无问题地在控制台上显示前 10k 行,但是当我查询整个表以获取所有结果时,控制台返回一个空白对象,有什么可能的解决方法吗?

function loadProducts() {
   jQuery.ajax({
                type: "POST",
                data:{'x':'x' },
                url: 'performanceHelper/loadProductList.php',
                dataType: 'text',

                success: function (result, textstatus) {
                   //Removing reference in Firebase   
                    console.log(result);
                }
                });
}
window.onload = loadProducts();

PHP 代码

require_once("../connect.php");


$sql = "SELECT productID, productDesc FROM products";


  $temp = $dbh->query($sql);


  $results = $temp->fetchAll();


   echo json_encode($results);

【问题讨论】:

  • 可能是与控制台缓冲区显示大小有关的问题..您使用哪种浏览器?
  • 你到底要如何处理浏览器中的 50,000 个项目,而不是向用户展示它们?
  • 我怀疑它只是缺少足够的内存供 $results = $temp->fetchAll(); 使用,因此以 500 错误结束。
  • 有 50000 种产品,用户可以选择每种产品以获取更多详细信息,我想我会选择 @AceKYD 分页答案,如果有人有任何其他的解决方法值得赞赏
  • @cFreed 我尝试在我的 php ini 配置中增加内存限制

标签: php sql-server ajax


【解决方案1】:

就像在 cmets 中提到的@RiggsFolly,你到底想用浏览器中的 50000 个项目做什么????

但是,如果您必须这样做,因为您可以获得 10k 而不会出现您提到的任何问题,我建议您尝试分页...创建一个函数来通过发送 startlimit 作为参数来获取项目。

这样您不必一次发送 50k 项,但您仍然可以获取数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-16
    • 2012-04-04
    • 1970-01-01
    • 2014-11-07
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 2014-02-04
    相关资源
    最近更新 更多