四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

PHP 讀取大文件的X行到Y(jié)行內(nèi)容的實(shí)現(xiàn)代碼

需要讀取一個(gè)文件的幾行內(nèi)容,但是文件比較大,所以研究了下php讀取大文件的幾行內(nèi)容的方法,寫了一個(gè)方法,代碼如下(加了注釋):
緩存文件如果能夠保存在一行, 而利用算法讀取指定的行數(shù), 自然會(huì)比全部讀出來挑選要快得多. 但php似乎這方面比較弱, 不太好操作. 就算使用SplFileObject仍然不是特別可取, 內(nèi)存壓力存在.

復(fù)制代碼 代碼如下:
$fp->seek($startLine - 1);


經(jīng)過測(cè)試, 此行代碼在8MB文本中游走到最后一行, 內(nèi)存占用為49KB, 還算不錯(cuò). 換成fopen方式用fgets跳過的模式, 則花費(fèi)29KB的內(nèi)存, fopen還是占優(yōu)勢(shì).

復(fù)制代碼 代碼如下:
function getFileLines($filename, $startLine = 1, $endLine = 50, $method = 'rb'){
$content = array();

if (version_compare(php_VERSION, '5.1.0', '>=')) { // 判斷php版本(因?yàn)橐玫絊plFileObject,php>=5.1.0)
$count = $endLine - $startLine;
$fp = new SplFileObject($filename, $method);
$fp->seek($startLine - 1); // 轉(zhuǎn)到第N行, seek方法參數(shù)從0開始計(jì)數(shù)
for ($i = 0; $i <= $count; ++$i) {
$content[] = $fp->current(); // current()獲取當(dāng)前行內(nèi)容
$fp->next(); // 下一行
}
} else { //php<5.1
$fp = fopen($filename, $method);
if (!$fp)
return 'error:can not read file';
for ($i = 1; $i < $startLine; ++$i) { // 跳過前$startLine行
fgets($fp);
}

for ($i; $i <= $endLine; ++$i) {
$content[] = fgets($fp); // 讀取文件行內(nèi)容
}
fclose($fp);
}
return array_filter($content); // array_filter過濾:false,null,''
}


效果不錯(cuò), SplFileObject類功能比較好.

php技術(shù)PHP 讀取大文件的X行到Y(jié)行內(nèi)容的實(shí)現(xiàn)代碼,轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 美女mm| 真实游戏完整版高清观看| 湖南金鹰卡通节目表| 相识电影| 房兵| 大家都在搜| 爱情秘密| 黄日华版射雕英雄传| 77316电影| 我的野蛮女老师2| 水管十大品牌排行榜前十名| 正在恋爱中全集在线观看| 风月宝鉴电影剧情解析| 最美表演| 《两座山》俄剧| 儿媳妇电视剧在线观看| 我的幸福婚约| 大红灯笼高高挂剧情介绍| 一闪一闪亮晶晶的简谱钢琴| 男女男在线观看| dy充值| junk boy| 社会主义建设在探索中曲折发展| 情侣自拍偷拍| 陈稳| 陕西卫视节目表| 杨少华简历个人资料简介| 电影鸭之一族| 我的吸血鬼学姐| 慕思成| 电影《来的都是客》| 五年级下册谐音小故事| 捷克女人性ⅹxxxx视频 | 挖掘机动画片儿童| 《棋魂》电视剧| 婴儿什么时候添加辅食最好| 今天cctv6节目表| 只园| 小野惠令奈| 红海行动2| 八哥图库图谜|