亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
使用fopen()fgets()進(jìn)行逐行讀取
使用fread()讀取二進(jìn)制塊
考慮使用 SplFileObject 進(jìn)行面向?qū)ο罂刂?/a>
首頁 後端開發(fā) php教程 如何在 PHP 中高效讀取大文件

如何在 PHP 中高效讀取大文件

Oct 13, 2025 am 04:49 AM

將 fopen() 與 fgets() 或 fread() 一起使用可以分塊讀取大文件,避免內(nèi)存耗盡。逐行處理文本文件或使用二進(jìn)制緩衝區(qū)以獲得更好的控制。 SplFileObject 提供了一種干淨(jìng)的、面向?qū)ο蟮奶娲桨?。始終流式傳輸數(shù)據(jù),而不是將其完全加載到內(nèi)存中。

如何在 PHP 中高效讀取大文件

在 PHP 中有效地讀取大文件意味著避免高內(nèi)存使用和低性能。使用file_get_contents()等函數(shù)將整個(gè)文件加載到內(nèi)存中可能會(huì)導(dǎo)致內(nèi)存耗盡。相反,使用一次讀取一行或一段的循環(huán)來分塊處理文件。

使用fopen()fgets()進(jìn)行逐行讀取

如果您的大文件是按行構(gòu)建的(例如日誌或 CSV),請一次讀取一行:

$handle = fopen("large_file.txt", "r");
如果($句柄){
    while (($line = fgets($handle)) !== false) {
        // 處理每一行
        回顯$行;
    }
    fclose($句柄);
} 別的 {
    // 打開文件時(shí)出錯(cuò)
}

此方法使用最少的內(nèi)存,因?yàn)橐淮蝺H加載一行。

使用fread()讀取二進(jìn)制塊

對於非文本文件或當(dāng)您需要對讀取大小進(jìn)行更多控制時(shí),請使用具有固定緩衝區(qū)大小的fread()

$handle = fopen("large_file.bin", "rb");
$緩衝區(qū)大小= 8192; // 每次讀取 8KB
while (!feof($handle)) {
    $chunk = fread($handle, $bufferSize);
    if ($chunk === false) 中斷;
    // 處理塊
    回顯$塊;
}
fclose($句柄);

根據(jù)您的系統(tǒng)和性能需求調(diào)整緩衝區(qū)大小。這種方法適用於二進(jìn)製或非常大的文本文件。

$file = new SplFileObject("large_file.txt");
while (!$file->eof()) {
    $line = $file->fgets();
    // 處理線
    回顯$行;
}

它更乾淨(jìng),支持通過 foreach 進(jìn)行迭代,並且比原始函數(shù)更好地處理邊緣情況。

PHP 中的高效文件讀取歸結(jié)為流式傳輸,而不是一次性加載所有文件。使用fgets()處理基於行的數(shù)據(jù),使用 fread()處理二進(jìn)製或自定義緩衝,並考慮使用SplFileObject以獲得更簡潔的代碼。除非絕對必要,否則不要存儲(chǔ)整個(gè)文件,以保持較低的內(nèi)存使用量。

基本上只是避免在大文件上使用file_get_contents()file() - 它們將所有內(nèi)容加載到 RAM 中。堅(jiān)持迭代閱讀,您將順利處理數(shù)千兆字節(jié)的文件。

以上是如何在 PHP 中高效讀取大文件的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Stock Market GPT

Stock Market GPT

人工智慧支援投資研究,做出更明智的決策

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

如何檢查電子郵件地址在PHP中是否有效? 如何檢查電子郵件地址在PHP中是否有效? Sep 21, 2025 am 04:07 AM

usefilter_var()

如何在PHP中製作對象的深度副本或克??? 如何在PHP中製作對象的深度副本或克??? Sep 21, 2025 am 12:30 AM

useunSerialize(serialize($ obj))fordeepcopyingwhenalldataiSerializable;否則,exhiment__clone()tomanallyDuplicateNestedObjectedObjectSandAvoidSharedReference。

如何合併PHP中的兩個(gè)陣列? 如何合併PHP中的兩個(gè)陣列? Sep 21, 2025 am 12:26 AM

usearray_merge()tocombinearrays,oftritingDupritingDuplicateStringKeySandReIndexingNumericKeys; forsimplerconcatenation,尤其是innphp5.6,usethesplatoperator [... $ array1,... $ array2]。

如何在PHP項(xiàng)目中使用名稱空間? 如何在PHP項(xiàng)目中使用名稱空間? Sep 21, 2025 am 01:28 AM

NamespacesinPHPorganizecodeandpreventnamingconflictsbygroupingclasses,interfaces,functions,andconstantsunderaspecificname.2.Defineanamespaceusingthenamespacekeywordatthetopofafile,followedbythenamespacename,suchasApp\Controllers.3.Usetheusekeywordtoi

如何使用PHP更新數(shù)據(jù)庫中的記錄? 如何使用PHP更新數(shù)據(jù)庫中的記錄? Sep 21, 2025 am 04:47 AM

toupdateadatabaseRecordInphp,firstConnectusingpDoormySqli,thenusepreparedStatementStoExecuteAsecuteAsecuresqurupDatequery.example.example:$ pdo = newpdo(“ mySql:mysql:host = localHost; localhost; localhost; dbname; dbname = your_database = your_database',yous_database',$ username,$ username,$ squeaste;

PHP中的魔術(shù)方法是什麼,並提供了'__call()和`__get()'的示例。 PHP中的魔術(shù)方法是什麼,並提供了'__call()和`__get()'的示例。 Sep 20, 2025 am 12:50 AM

__call()methodistred prightedwhenaninAccessibleOrundEfinedMethodiscalledonAnaBject,允許customhandlingByAcceptingTheMethodNameAndarguments,AsshoheNpallingNengallingUndEfineDmethodSlikesayHello()

如何在PHP中獲取文件擴(kuò)展名? 如何在PHP中獲取文件擴(kuò)展名? Sep 20, 2025 am 05:11 AM

usepathinfo($ fileName,pathinfo_extension)togetThefileextension; itreliablyhandlesmandlesmultipledotsAndEdgecases,返回theextension(例如,“ pdf”)oranemptystringifnoneexists。

如何在PHP中創(chuàng)建文件的郵政編碼? 如何在PHP中創(chuàng)建文件的郵政編碼? Sep 18, 2025 am 12:42 AM

使用ZipArchive類可創(chuàng)建ZIP文件,先實(shí)例化並打開目標(biāo)zip,用addFile添加文件,支持自定義內(nèi)部路徑,遞歸函數(shù)可打包整個(gè)目錄,最後調(diào)用close保存,確保PHP有寫權(quán)限。

See all articles