中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

PHP查詢大量數據內存耗盡怎么辦

發布時間:2021-08-31 14:59:02 來源:億速云 閱讀:139 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關PHP查詢大量數據內存耗盡怎么辦的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

從數據庫查詢大量數據時會出現內容不夠的提示

PHP Fatal error: Allowed memory size of 268 435 456 bytes exhausted

這個問題在PHP的官方網站上叫緩沖查詢和非緩沖查詢(Buffered and Unbuffered queries)。PHP的查詢缺省模式是緩沖模式。也就是說,查詢數據結果會一次全部提取到內存里供PHP程序處理。這樣給了PHP程序額外的功能,比如說,計算行數,將指針指向某一行等。更重要的是程序可以對數據集反復進行二次查詢和過濾等操作。但這種緩沖查詢模式的缺陷就是消耗內存,也就是用空間換速度。

相對的,另外一種PHP查詢模式是非緩沖查詢,數據庫服務器會一條一條的返回數據,而不是一次全部返回,這樣的結果就是PHP程序消耗較少的內存,但卻增加了數據庫服務器的壓力,因為數據庫會一直等待PHP來取數據,一直到數據全部取完。

很顯然,緩沖查詢模式適用于小數據量查詢,而非緩沖查詢適應于大數據量查詢。

對于PHP的緩沖模式查詢大家都知道,下面列舉的例子是如何執行非緩沖查詢API。

 非緩沖查詢方法一: mysqli

<?php 
$mysqli = new mysqli("localhost", "my_user", "my_password", "world"); 
$uresult = $mysqli->query("SELECT Name FROM City", MYSQLI_USE_RESULT); 
if ($uresult) { 
  while ($row = $uresult->fetch_assoc()) { 
    echo $row['Name'] . PHP_EOL; 
  } 
} 
$uresult->close(); 
?>

非緩沖查詢方法二: pdo_mysql

<?php 
$pdo = new PDO("mysql:host=localhost;dbname=world", 'my_user', 'my_pass'); 
$pdo->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false); 
$uresult = $pdo->query("SELECT Name FROM City"); 
if ($uresult) { 
  while ($row = $uresult->fetch(PDO::FETCH_ASSOC)) { 
    echo $row['Name'] . PHP_EOL; 
  } 
} 
?>

非緩沖查詢方法三: mysql

<?php 
$conn = mysql_connect("localhost", "my_user", "my_pass"); 
$db  = mysql_select_db("world"); 
$uresult = mysql_unbuffered_query("SELECT Name FROM City"); 
if ($uresult) { 
  while ($row = mysql_fetch_assoc($uresult)) { 
    echo $row['Name'] . PHP_EOL; 
  } 
} 
?>

感謝各位的閱讀!關于“PHP查詢大量數據內存耗盡怎么辦”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

南昌县| 十堰市| 扶绥县| 佛教| 布拖县| 黔江区| 安丘市| 青浦区| 裕民县| 德保县| 阳谷县| 密云县| 南昌县| 盐边县| 沁水县| 芜湖县| 南康市| 邹城市| 云阳县| 洛隆县| 万源市| 湘乡市| 额敏县| 四会市| 城口县| 沈丘县| 奉化市| 杨浦区| 麦盖提县| 长阳| 叙永县| 金华市| 牡丹江市| 纳雍县| 安化县| 邳州市| 洪洞县| 精河县| 舒城县| 石渠县| 岫岩|