久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合

站長資訊網(wǎng)
最全最豐富的資訊網(wǎng)站

聊聊怎么利用PHP讀取大文件(教程分享)

PHP如何讀取大文件?下面本篇文章給大家介紹一下利用PHP讀取大文件的方法,希望對大家有所幫助!

聊聊怎么利用PHP讀取大文件(教程分享)

推薦課程:《Vue + TP6 + Mysql 社交電商系統(tǒng)開發(fā)視頻課》
API 文檔、設(shè)計(jì)、調(diào)試、自動化測試一體化協(xié)作工具:點(diǎn)擊使用

作為PHP開發(fā)人員,我們不需要擔(dān)心內(nèi)存管理。 PHP引擎在我們背后進(jìn)行了出色的清理工作,短暫執(zhí)行上下文的 web server 模型意味著即使是最草率的代碼也沒有持久的影響。

在極少數(shù)情況下,我們可能需要走出舒適的界限 — 例如,當(dāng)我們嘗試在可以創(chuàng)建的最小 VPS 上為大型項(xiàng)目運(yùn)行 Composer 時,或者需要在同樣小的服務(wù)器上讀取大文件時。

這是我們將在本教程中討論的一個問題。

本教程的代碼可以在這里找到 GitHub。

衡量成功

唯一能確認(rèn)我們對代碼所做改進(jìn)是否有效的方式是:衡量一個糟糕的情況,然后對比我們已經(jīng)應(yīng)用改進(jìn)后的衡量情況。換言之,除非我們知道“解決方案”能幫我們到什么程度(如果有的話),否則我們并不知道它是否是一個解決方案。

我們可以關(guān)注兩個指標(biāo)。首先是CPU使用率。我們要處理的過程運(yùn)行得有多快或多慢?其次是內(nèi)存使用率。腳本執(zhí)行要占用多少內(nèi)存?這些通常是成反比的—這意味著我們能夠以CPU使用率為代價減少內(nèi)存的使用率,反之亦可。

在一個異步處理模型(例如多進(jìn)程或多線程PHP應(yīng)用程序)中,CPU和內(nèi)存使用率都是重要的考量。在傳統(tǒng)PHP架構(gòu)中,任一達(dá)到服務(wù)器所限時這些通常都會成為一個麻煩。

測量PHP內(nèi)部的CPU使用率是難以實(shí)現(xiàn)的。如果你確實(shí)關(guān)注這一塊,可用考慮在Ubuntu或macOS中使用類似于 top 的命令。對于Windows,則可用考慮使用Linux子系統(tǒng),這樣你就能夠在Ubuntu中使用 top 命令了。

在本教程中,我們將測量內(nèi)存使用情況。我們將看一下“傳統(tǒng)”腳本會使用多少內(nèi)存。我們也會實(shí)現(xiàn)一些優(yōu)化策略并對它們進(jìn)行度量。最后,我希望你能做一個合理的選擇。

以下是我們用于查看內(nèi)存使用量的方法:

// formatBytes 方法取材于 php.net 文檔  memory_get_peak_usage();  function formatBytes($bytes, $precision = 2) {     $units = array("b", "kb", "mb", "gb", "tb");      $bytes = max($bytes, 0);     $pow = floor(($bytes ? log($bytes) : 0) / log(1024));     $pow = min($pow, count($units) - 1);      $bytes /= (1 << (10 * $pow));      return round($bytes, $precision) . " " . $units[$pow]; }

我們將在腳本的結(jié)尾處使用這些方法,以便于我們了解哪個腳本一次使用了最多的內(nèi)存。

我們有什么選擇?

我們有許多方法來有效地讀取文件。有以下兩種場景會使用到他們。我們可能希望同時讀取和處理所有數(shù)據(jù),對處理后的數(shù)據(jù)進(jìn)行輸出或者執(zhí)行其他操作。 我們還可能希望對數(shù)據(jù)流進(jìn)行轉(zhuǎn)換而不需要訪問到這些數(shù)據(jù)。

想象以下,對于第一種情況,如果我們希望讀取文件并且把每 10,000 行的數(shù)據(jù)交給單獨(dú)的隊(duì)列進(jìn)行處理。我們則需要至少把 10,000 行的數(shù)據(jù)加載到內(nèi)存中,然后把它們交給隊(duì)列管理器(無論使用哪種)。

對于第二種情況,假設(shè)我們想要壓縮一個 API 響應(yīng)的內(nèi)容,這個 API 響應(yīng)特別大。雖然這里我們不關(guān)心它的內(nèi)容是什么,但是我們需要確保它被以一種壓縮格式備份起來。

這兩種情況,我們都需要讀取大文件。不同的是,第一種情況我們需要知道數(shù)據(jù)是什么,而第二種情況我們不關(guān)心數(shù)據(jù)是什么。接下來,讓我們來深入討論一下這兩種做法…

逐行讀取文件

PHP 處理文件的函數(shù)很多,讓我們將其中一些函數(shù)結(jié)合起來實(shí)現(xiàn)一個簡單的文件閱讀器

// from memory.php  function formatBytes($bytes, $precision = 2) {     $units = array("b", "kb", "mb", "gb", "tb");      $bytes = max($bytes, 0);     $pow = floor(($bytes ? log($bytes) : 0) / log(1024));     $pow = min($pow, count($units) - 1);      $bytes /= (1 << (10 * $pow));      return round($bytes, $precision) . " " . $units[$pow]; }  print formatBytes(memory_get_peak_usage());
// from reading-files-line-by-line-1.php function readTheFile($path) {     $lines = [];     $handle = fopen($path, "r");      while(!feof($handle)) {         $lines[] = trim(fgets($handle));     }      fclose($handle);     return $lines; }  readTheFile("shakespeare.txt");  require "memory.php";

我們正在閱讀一個包括莎士比亞全部著作的文本文件。該文件大小大約為 5.5 MB。內(nèi)存使用峰值為 12.8 MB。現(xiàn)在,讓我們使用生成器來讀取每一行:

// from reading-files-line-by-line-2.php  function readTheFile($path) {     $handle = fopen($path, "r");      while(!feof($handle)) {         yield trim(fgets($handle));     }      fclose($handle); }  readTheFile("shakespeare.txt");  require "memory.php";

文件大小相同,但是內(nèi)存使用峰值為 393 KB。這個數(shù)據(jù)意義大不大,因?yàn)槲覀冃枰尤雽ξ募?shù)據(jù)的處理。例如,當(dāng)出現(xiàn)兩個空白行時,將文檔拆分為多個塊:

// from reading-files-line-by-line-3.php  $iterator = readTheFile("shakespeare.txt");  $buffer = "";  foreach ($iterator as $iteration) {     preg_match("/n{3}/", $buffer, $matches);      if (count($matches)) {         print ".";         $buffer = "";     } else {         $buffer .= $iteration . PHP_EOL;     } }  require "memory.php";

有人猜測這次使用多少內(nèi)存嗎?即使我們將文本文檔分為 126 個塊,我們?nèi)匀恢皇褂?459 KB 的內(nèi)存。鑒于生成器的性質(zhì),我們將使用的最大內(nèi)存是在迭代中需要存儲最大文本塊的內(nèi)存。在這種情況下,最大的塊是 101985 個字符。

我已經(jīng)寫過 使用生成器提高性能 以及 生成器擴(kuò)展包,感興趣的可以去查看

贊(0)
分享到: 更多 (0)
?
網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號
久久精品五月,日韩不卡视频在线观看,国产精品videossex久久发布 ,久久av综合
天堂а√在线最新版中文在线| 欧美一区激情| 麻豆精品新av中文字幕| 色婷婷成人网| 97成人在线| 欧美一区二区三区久久| 日韩精选在线| 国产黄色一区| 精品视频一区二区三区在线观看 | 欧美日韩一区二区国产| 日韩毛片一区| 国产福利资源一区| 高清不卡亚洲| 国产亚洲欧洲| 久久国内精品自在自线400部| 精品国产精品国产偷麻豆 | 蜜臀av一区二区三区| 亚洲高清激情| 日韩激情av在线| 国产一区二区三区成人欧美日韩在线观看| 成人午夜在线| 欧美sm一区| 99国产精品久久久久久久成人热| 亚洲人成网77777色在线播放| 欧美影院视频| 1024精品一区二区三区| 亚洲精品福利| 欧美日韩精品免费观看视完整| 国产午夜精品一区二区三区欧美| 亚洲精品第一| 日韩免费一区| 日韩成人午夜精品| 久久国产影院| 91精品国产自产观看在线| 国产白浆在线免费观看| 久久亚洲影院| 国产欧美日本| 亚洲深夜福利| 久久影院午夜精品| 91欧美极品| 国产综合亚洲精品一区二| 国产精品一区二区三区av麻| 欧美 日韩 国产精品免费观看| 国产精品最新| 丝瓜av网站精品一区二区| 四虎成人av| 日韩精品免费视频一区二区三区| 亚洲精品自拍| 久久久精品久久久久久96| 亚洲一级少妇| 国产欧美一区二区三区精品酒店| 国产极品一区| 黄色在线观看www| 免费一区二区视频| 久久电影tv| 群体交乱之放荡娇妻一区二区| 亚洲天堂成人| 亚洲精品婷婷| 欧美xxxx中国| 免费成人在线影院| 久久一区视频| 在线视频观看日韩| 亚州欧美在线| 日韩国产一区| 日本aⅴ免费视频一区二区三区| 动漫av一区| 欧美成a人国产精品高清乱码在线观看片在线观看久 | 日韩一区二区在线免费| 精品中国亚洲| 国产成人免费av一区二区午夜| 麻豆成人91精品二区三区| 在线 亚洲欧美在线综合一区| 日本久久黄色| 日韩精品网站| 亚洲欧美日韩一区在线观看| 欧美日韩国产高清| 日韩和欧美一区二区| 久久久亚洲一区| 免费不卡中文字幕在线| 天堂成人免费av电影一区| 午夜亚洲福利| 国产精品地址| 国产精品不卡| 日韩午夜高潮| 国产欧美日本| 丝袜av一区| 蜜臀精品久久久久久蜜臀 | 成人片免费看| 一区视频在线| 亚洲尤物av| 国产精品调教| 欧美精品一二| 免费一级片91| 日韩精品不卡一区二区| 蜜臀精品久久久久久蜜臀| 久久这里只有精品一区二区| 丰满少妇一区| 一区二区三区四区日韩| 久久久久久亚洲精品美女| 日韩午夜高潮| 精品一区视频| 欧美性感美女一区二区| 97se亚洲| 日韩欧美中文字幕电影| 亚洲精品一级二级| 精品国产99| 精品女同一区二区三区在线观看| 综合日韩在线| 97精品国产| 国产一区二区三区久久久久久久久| 91久久久久| 午夜精品免费| 国产一区亚洲| 日韩一区欧美| 香蕉成人av| 欧美日韩尤物久久| 国内揄拍国内精品久久| 福利视频一区| 国产一二在线播放| 国产欧美日韩精品一区二区三区| 久热re这里精品视频在线6| 亚洲激情中文在线| 欧美日韩一二三四| 久久av在线| 中文字幕成人| 亚洲精品乱码| 日韩av网站在线观看| 四虎精品永久免费| 国产精品久久久亚洲一区| 麻豆国产精品视频| 日韩理论视频| 亚洲欧洲日韩精品在线| 国产精品久久久久久模特| 国产中文在线播放| 精品在线91| 国产在线不卡| 日本中文字幕一区二区视频| 国产美女高潮在线观看| 国产精品普通话对白| 国产情侣久久| 激情欧美日韩一区| 日韩视频1区| 久久久久久黄| 亚洲精品福利| 久久精品国语| 奇米亚洲欧美| 欧美日韩在线播放视频| 日韩在线麻豆| 久久久久国产精品一区三寸| 婷婷亚洲成人| 国产不卡一区| 日韩精品三区四区| 欧美日韩精品免费观看视欧美高清免费大片 | 久久国产精品色av免费看| 国产亚洲一区二区三区啪| 免费美女久久99| 欧美影院三区| 三级在线看中文字幕完整版| 亚洲精品乱码久久久久久蜜桃麻豆| 欧美日韩国产在线观看网站 | 国产美女高潮在线| 国产中文字幕一区二区三区| 国产精品美女在线观看直播| 日韩av黄色在线| 亚洲一级淫片| 亚洲深夜av| 性欧美长视频| 欧美精品九九| 欧美在线资源| 岛国精品一区| 久久麻豆视频| 久久av电影| 久久国产生活片100| 亚洲精品欧洲| 日韩精品社区| 国产精品一区三区在线观看| 日韩av中文字幕一区二区三区| 丝瓜av网站精品一区二区| 热久久国产精品| 国产精品美女久久久浪潮软件| 国产99亚洲| av成人国产| 最新国产拍偷乱拍精品| 欧美成人综合| 久草免费在线视频| 999久久久亚洲| 国产一区导航| 91麻豆精品激情在线观看最新| 日韩成人精品一区二区三区 | 国产精品呻吟| 日韩中文字幕麻豆| 欧美成a人片免费观看久久五月天| 欧美偷窥清纯综合图区| 精品黄色一级片| 久久精品高清| 婷婷亚洲精品| 日本精品影院| 国产精品日本| 美女视频网站久久| 日韩精选在线|