天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

PHP讀取大文件的類SplFileObject使用介紹

如果加載的文件特別大時,如幾百M,上G時,這時性能就降下來了,那么php里有沒有對大文件的處理函數或者類呢? 答案是:有的。
php真的越來越“面向對象”了,一些原有的基礎的SPL方法都開始陸續地實現出class了。
php 5.1.0 開始,SPL 庫增加了 SplFileObject 與 SplFileInfo 兩個標準的文件操作類。SplFileInfo 是從 php 5.1.2 開始實現的。
從字面意思理解看,可以看出 SplFileObject 要比 SplFileInfo 更為強大。
不錯,SplFileInfo 僅用于獲取文件的一些屬性信息,如文件大小、文件訪問時間、文件修改時間、后綴名等值,而 SplFileObject 是繼承 SplFileInfo 這些功能的。
 復制代碼 代碼如下:/** 返回文件從X行到Y行的內容(支持php5、php4) 
 * @param string $filename 文件名
 * @param int $startLine 開始的行數
 * @param int $endLine 結束的行數
 * @return string
 */
function getFileLines($filename, $startLine = 1, $endLine=50, $method='rb') {
    $content = array();
    $count = $endLine - $startLine; 
    // 判斷php版本(因為要用到SplFileObject,php>=5.1.0)
    if(version_compare(php_VERSION, '5.1.0', '>=')){
        $fp = new SplFileObject($filename, $method);
        $fp->seek($startLine-1);// 轉到第N行, seek方法參數從0開始計數
        for($i = 0; $i <= $count; ++$i) {
            $content[]=$fp->current();// current()獲取當前行內容
            $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);// 讀取文件行內容
        }
        fclose($fp);
    }
    return array_filter($content); // array_filter過濾:false,null,''
}   
Ps: 上面都沒加”讀取到末尾的判斷”:!$fp->eof() 或者 !feof($fp),加上這個判斷影響效率,自己加上測試很多很多很多行的運行時間就曉得了,而且這里加上也完全沒必要。
從上面的函數就可以看出來使用SplFileObject比下面的fgets要快多了,特別是文件行數非常多、并且要取后面的內容的時候。fgets要兩個循環才可以,并且要循環$endLine次。
此方法花了不少功夫,測試了很多中寫法,就是想得出效率最高的方法。哪位覺得有值得改進的歡迎賜教。
使用,返回35270行-35280行的內容:
復制代碼 代碼如下:echo '<pre>';
var_dump(getFileLines('test.php',35270,35280));
echo '</pre>'; 

php技術PHP讀取大文件的類SplFileObject使用介紹,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 日本亚洲精品无码区国产电影 | 在线免费福利 | 69国产精品成人无码视频 | 欧美亚洲精品一区二三区8V | 无码人妻精品一区二区蜜桃色欲 | 熟女理发厅 | 奇米网一区二区三区在线观看 | 精品性影院一区二区三区内射 | 亚洲综合中文 | 国产精品97久久AV麻豆 | 九九99亚洲精品久久久久 | 亚洲国产第一区二区三区 | 99热久这里都是精品小草 | 中文文字幕文字幕亚洲色 | 国产欧美日韩网站 | 一本色道久久综合亚洲精品蜜桃冫 | 爱情岛论坛免费在线观看 | 被送到黑人性奴俱乐部 | 91精品一区二区综合在线 | 国产精品悠悠久久人妻精品 | 2021国产精品久久久久精品免费网 | 午夜DJ国产精华日本无码 | 中文字幕无码亚洲视频 | 麻豆传煤网站网址入口在线下载 | 亚洲欧美成人 | 亚洲精品高清AV在线播放 | 国产精品人成视频免费999 | 久久五月综合婷婷中文云霸高清 | 久啪久久全部视频在线 | 小玲被公扒开腿 | 亚洲男同tv | 神马影院午夜伦理限级 | 国产黄a三级三级三级 | 午夜在线观看免费完整直播网 | 91麻豆精品一二三区在线 | 亚洲H成年动漫在线观看不卡 | 内射一区二区精品视频在线观看 | 国产精品7777人妻精品冫 | 一区二区视频在线观看高清视频在线 | 亚洲熟女乱色一区二区三区 | 国产精品亚洲欧美 |