[英]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?
謝謝
既然您說過也可以分塊發送數組 ,這意味着可以按多種方式整理數據,因此我考慮這樣做:
unset
為可用內存。 像這樣:
<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處理
$(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.