中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

php幾個快速讀取大文件例子
來源:易賢網 閱讀:810 次 日期:2014-11-20 09:50:53
溫馨提示:易賢網小編為您整理了“php幾個快速讀取大文件例子”,方便廣大網友查閱!

在php中,對于文件的讀取時,最快捷的方式莫過于使用一些諸如file、file_get_contents之類的函數,簡簡單單的幾行代碼就能很漂亮的完成我們所需要的功能。但當所操作的文件是一個比較大的文件時,這些函數可能就顯的力不從心, 下面將從一個需求入手來說明對于讀取大文件時,常用的操作方法。

需求

有一個800m的日志文件,大約有500多萬行, 用php返回最后幾行的內容。

實現方法

1. 直接采用file函數來操作

由于 file函數是一次性將所有內容讀入內存,而php為了防止一些寫的比較糟糕的程序占用太多的內存而導致系統內存不足,使服務器出現宕機,所以默認情況下限制只能最大使用內存16m,這是通過php.ini里的 memory_limit = 16m 來進行設置,這個值如果設置-1,則內存使用量不受限制。

下面是一段用file來取出這具文件最后一行的代碼:

代碼如下:

<?php

ini_set('memory_limit', '-1');

$file = 'access.log';

$data = file($file);

$line = $data[count($data) - 1];

echo $line;

?>

整個代碼執行完成耗時 116.9613 (s)。

我機器是2個g的內存,當按下f5運行時,系統直接變灰,差不多20分鐘后才恢復過來,可見將這么大的文件全部直接讀入內存,后果是多少嚴重,所以不在萬 不得以,memory_limit這東西不能調得太高,否則只有打電話給機房,讓reset機器了。

2.直接調用linux的 tail 命令來顯示最 后幾行

在linux命令行下,可以直接使用 tail -n 10 access.log 很輕易的顯示日志文件最后幾行,可以直接用php來調用tail命令,執行php代碼如下:

代碼如下:

<?php

$file = 'access.log';

$file = escapeshellarg($file); // 對命令行參數進行安全轉義

$line = `tail -n 1 $file`;

echo $line;

?>

整個代碼執行完成耗時 0.0034 (s)

3. 直接使用php的 fseek 來進行文件操作

這種方式是最為普遍的方式,它不需要將文件的內容全部讀入內容,而是直接通過指針來操作,所以效率是相當高效的。在使用fseek來對文件進行操作時,也有多種不同的方法,效率可能也是略有差別的,下面是常用的兩種方法:

方法一

首先通過fseek找到文件的最后一位eof,然后找最后一行的起始位置,取這一行的數據,再找次一行的起始位置, 再取這一行的位置,依次類推,直到找到了$num行。

#實現代碼如下

代碼如下:

<?php

$fp = fopen($file, r);

$line = 10;

$pos = -2;

$t = ;

$data = ;

while ($line > 0)

{

while ($t != \n)

{

fseek($fp, $pos, seek_end);

$t = fgetc($fp);

$pos--;

}

$t = ;

$data .= fgets($fp);

$line--;

}

fclose($fp);

echo $data

?>

整個代碼執行完成耗時 0.0095 (s)

方法二

還是采用fseek的方式從文件最后開始讀,但這時不是一位一位的讀,而是一塊一塊的讀,每讀一塊數據時,就將讀取后的數據放在一個buf里,然后通過換 行符(\n)的個數來判斷是否已經讀完最后$num行數據。

#實現代碼如下

代碼如下:

<?php

$fp = fopen($file, r);

$num = 10;

$chunk = 4096;

$fs = sprintf(%u, filesize($file));

$max = (intval($fs) == php_int_max) ? php_int_max : filesize($file);

for ($len = 0; $len < $max; $len += $chunk)

{

$seeksize = ($max - $len > $chunk) ? $chunk : $max - $len;

fseek($fp, ($len + $seeksize) * -1, seek_end);

$readdata = fread($fp, $seeksize) . $readdata;

if (substr_count($readdata, \n) >= $num + 1)

{

preg_match(!(.*?\n){ . ($num) . }$!, $readdata, $match);

$data = $match[0];

break;

}

}

fclose($fp);

echo $data;

?>

整個代碼執行完成耗時 0.0009(s)。

方法三

代碼如下:

<?php

function tail($fp, $n, $base = 5)

{

assert($n > 0);

$pos = $n + 1;

$lines = array();

while (count($lines) <= $n)

{

try

{

fseek($fp, -$pos, seek_end);

}

catch (exception $e)

{

fseek(0);

break;

}

$pos *= $base;

while (!feof($fp))

{

array_unshift($lines, fgets($fp));

}

}

return array_slice($lines, 0, $n);

}

var_dump(tail(fopen(access.log, r+), 10));

?>

整個代碼執行完成耗時 0.0003(s)

更多信息請查看IT技術專欄

更多信息請查看網絡編程
易賢網手機網站地址:php幾個快速讀取大文件例子
由于各方面情況的不斷調整與變化,易賢網提供的所有考試信息和咨詢回復僅供參考,敬請考生以權威部門公布的正式信息和咨詢為準!

2026上岸·考公考編培訓報班

  • 報班類型
  • 姓名
  • 手機號
  • 驗證碼
關于我們 | 聯系我們 | 人才招聘 | 網站聲明 | 網站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
工業和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
云南網警備案專用圖標
聯系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關注公眾號:hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權所有:易賢網
云南網警報警專用圖標
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
亚洲国产欧美日韩| 欧美精品久久99| 国产午夜精品久久久| 欧美二区在线播放| 久久综合亚洲社区| 久久成人国产| 欧美一区二区日韩一区二区| 一区二区三区欧美在线| 日韩一级大片在线| 99亚洲一区二区| 99精品视频免费在线观看| 亚洲精品极品| 亚洲伦理网站| 中文欧美字幕免费| 亚洲制服欧美中文字幕中文字幕| 一本色道久久综合一区 | 久久综合中文色婷婷| 久久久视频精品| 久久人人97超碰国产公开结果 | 欧美一二区视频| 亚洲影院在线观看| 亚洲已满18点击进入久久| 亚洲一区二区在线免费观看视频| 一区二区三区视频免费在线观看| 中文久久乱码一区二区| 亚洲永久免费观看| 久久精品国产亚洲5555| 免费短视频成人日韩| 欧美人成在线视频| 国产精品成人免费| 国产综合色在线| 亚洲大片一区二区三区| 亚洲久久成人| 性感少妇一区| 欧美高清视频| 国产精品一级久久久| 国内一区二区在线视频观看| 亚洲电影专区| 亚洲影院污污.| 久久综合狠狠综合久久综青草| 国产精品高潮粉嫩av| 国产精品日韩久久久| 国产真实久久| 99综合视频| 久久久国产精品一区| 欧美欧美午夜aⅴ在线观看| 国产精品三区www17con| 亚洲高清一二三区| 亚洲欧美www| 欧美大片免费| 国产一区视频在线看| 一本久久综合亚洲鲁鲁| 久久久久成人精品| 国产精品毛片| 亚洲精品国产日韩| 久久成人免费电影| 欧美日韩亚洲一区二区三区| 国产一区二区三区四区五区美女| 日韩一本二本av| 久热精品视频在线观看| 国产精品一区二区你懂得| 亚洲欧洲在线播放| 久久成人国产精品| 国产精品成人免费视频| 亚洲人久久久| 蜜臀av一级做a爰片久久| 国产视频亚洲| 影视先锋久久| 久久精品91| 国产精品嫩草99a| 日韩亚洲精品电影| 欧美国产日韩视频| 亚洲第一福利社区| 久久久av网站| 国产自产精品| 欧美在线观看www| 国产日韩欧美亚洲| 亚洲欧美高清| 国产精品丝袜91| 亚洲天堂男人| 欧美亚男人的天堂| 一区二区三区日韩| 欧美视频在线观看| 在线视频精品一区| 欧美色另类天堂2015| 日韩视频三区| 欧美日韩一区二区视频在线 | 在线精品国产欧美| 久久久精品国产免大香伊| 国产毛片精品国产一区二区三区| 亚洲自拍偷拍网址| 国产精品美女诱惑| 欧美激情网友自拍| 亚洲电影在线观看| 老鸭窝毛片一区二区三区 | 亚洲经典视频在线观看| 免费在线欧美视频| 在线免费高清一区二区三区| 美女福利精品视频| 亚洲狠狠婷婷| 欧美日韩精品欧美日韩精品一 | 欧美一级成年大片在线观看| 国产精品实拍| 久久久青草婷婷精品综合日韩 | 亚洲欧美日产图| 国产女精品视频网站免费| 一区二区日韩精品| 亚洲人屁股眼子交8| 国产日韩亚洲| 欧美日韩在线免费| 免费视频一区| 久久久青草婷婷精品综合日韩| 亚洲高清网站| 1024日韩| 亚洲精品乱码久久久久久按摩观 | 国产尤物精品| 久热爱精品视频线路一| 91久久精品视频| 国产精品成人一区二区网站软件 | 美国成人毛片| 99在线热播精品免费99热| 欧美日韩精品一区二区在线播放 | 欧美激情视频一区二区三区免费| 亚洲经典一区| 国产精品国产三级国产普通话蜜臀 | 国产日韩欧美自拍| 老司机午夜精品视频| 在线中文字幕一区| 精品成人a区在线观看| 欧美日韩午夜剧场| 欧美性做爰毛片| 欧美一级二区| 亚洲日本免费电影| 国产日韩av高清| 欧美理论视频| 久久青草福利网站| 亚洲与欧洲av电影| 亚洲狠狠丁香婷婷综合久久久| 国产精品日本一区二区 | 欧美日韩一区三区四区| 久久激情一区| 一区二区三区视频在线观看| 精品成人免费| 国产美女搞久久| 欧美日韩视频一区二区| 久久阴道视频| 久久高清国产| 亚洲在线视频| 一区二区不卡在线视频 午夜欧美不卡在| 国产亚洲一区在线播放| 国产精品成人免费精品自在线观看| 久久精品中文字幕一区| 亚洲在线播放| 一区二区免费看| 亚洲日本免费| 影音先锋中文字幕一区| 国产精自产拍久久久久久| 欧美人成在线视频| 欧美电影免费观看网站| 久久日韩粉嫩一区二区三区| 欧美一区二区三区播放老司机| 一区二区三区久久久| 亚洲精选在线| 亚洲日本欧美日韩高观看| 亚洲高清不卡一区| 亚洲国产成人在线播放| 伊人男人综合视频网| 国内在线观看一区二区三区| 国产视频一区欧美| 国产色婷婷国产综合在线理论片a| 国产精品乱子久久久久| 国产精品乱子久久久久| 国产精品嫩草99av在线| 国产精品系列在线| 国产欧美一区二区精品仙草咪| 国产欧美va欧美va香蕉在| 国产三级精品三级| 狠狠久久婷婷| 亚洲高清不卡在线| 亚洲精品一区在线观看香蕉| 日韩亚洲欧美精品| 亚洲视频久久| 亚洲欧美视频在线观看| 久久av资源网| 免费日韩成人| 欧美日韩免费看| 国产精品一级在线| 韩日精品在线| 亚洲欧洲日本专区| 在线中文字幕日韩| 午夜精品免费在线| 久久婷婷色综合| 欧美激情亚洲综合一区| 国产精品久久| 黑丝一区二区| 久久久久久久久久久久久9999 | 国产一区观看| 一区三区视频| 一级成人国产| 久久成年人视频|