簡體   English   中英

如何將大量數據編碼為json

[英]How to encode large amount of data as json

我需要能夠將json從php傳遞到客戶端,以便javascript可以解析代碼並將其返回。 目前,我一直這樣做的方式是:

<?php
    $mysql_query = $mysqli->query(QUERY GOES HERE);
    $array - array();
    while($row = $mysql_query->fetch_assoc()){
        array_push($array, $row);
    }
    $json =json_encode($array);
?>
<!-- javascript -->
<script>
    var json = <?php echo $json;?>;
    //...
</script>
<!--- rest of html --->

這通常有效。 但是,查詢返回的行數超過100,000,並且php當前在創建整個數組時內存不足。 我見過有人說要使用ajax。 這是唯一的方法嗎? 如果是這樣,我將如何實施呢? 還是有一種更有效的方法將mysql數據編碼為不帶ajax的json?

謝謝

既然您說過也可以分塊發送數組 ,這意味着可以按多種方式整理數據,因此我考慮這樣做:

  • 在普通的php數組中,以小塊(明智的方式) 獲取數據庫數據。 這樣做的方式是將先前分配的塊unset為可用內存。
  • JSON將您的部分數據編碼為HTML元素。

像這樣:

<input id="json-1" type="hidden" data-json='<?php echo json_encode($chunk[0]); ?>' />
<input id="json-2" type="hidden" data-json='<?php echo json_encode($chunk[1]); ?>' />
<input id="json-3" type="hidden" data-json='<?php echo json_encode($chunk[2]); ?>' />

是的,它看起來很丑,但請考慮一些優點:

  • 沒有巨大的javascript JSON對象,占用了客戶端的內存
  • 您可以以漸進方式解析數據,從而僅消耗一部分內存

JavaScript處理

 $(document).ready(function() {
    $("input[id^='json-']").each(function() {
       var json = $(this).data("json");

       // process the chunkied 'json'

       // remove the memory allocated (since you dont want anymore the huge data, probably)
       $(this).removeData(this,"json")
    });
 });

如果您想將某些內容從php傳遞到javascript ,則必須使用ajax因為php是服務器端,而javascript是客戶端。

擁有100,000行的數組有點大,可能會引起問題。 考慮將數組分成較小的塊或限制查詢。

您可以增加php的內存限制,但最好先優化數組。

您無需處理大量數據。 分成幾頁。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM