国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > PHP > 正文

PHP查詢大量數據內存耗盡問題的解決方法

2024-05-04 23:51:36
字體:
來源:轉載
供稿:網友

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

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;   } } ?> 

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 博爱县| 南丰县| 石屏县| 九龙城区| 石景山区| 新龙县| 文水县| 兴安盟| 长武县| 秀山| 获嘉县| 汽车| 葫芦岛市| 龙川县| 民丰县| 玉田县| 古田县| 龙南县| 唐河县| 禹州市| 湾仔区| 安多县| 田林县| 宜都市| 伊金霍洛旗| 湘潭市| 海盐县| 穆棱市| 东莞市| 石屏县| 鹿泉市| 营山县| 泗洪县| 兰州市| 潼南县| 勐海县| 玉山县| 苗栗市| 桐柏县| 松潘县| 渝北区|