php擷取檔案的最後N行資料

來源:互聯網
上載者:User

本篇文章介紹的內容是php擷取檔案的最後N行資料,現在分享給大家,也可以給有需要的朋友一個參考

GitHub源碼
代碼是基於以下問題,給出的解決方案:
用php寫一個函數,擷取一個文字檔最後$n行內容,要求儘可能效率更高,並可以跨平台使用

我理解的可以跨平台使用,是說的檔案在windows平台和linux平台的行結束符不一致問題,在代碼中我們沒有體現這種不同。全部是在linux系統下的代碼。跨平台問題還需要理解?

<?phpheader("content-type:text/html;charset=utf-8");class GetFileLastNumRow{    private $filePath;    private $fileMode = 'r';    private $rowNum = 3;    public function __construct(array $config)    {        foreach ($config as $key => $value) {            $this->$key = $value;        }    }    public function run()    {        try {            $handle = fopen($this->filePath, $this->fileMode);            fseek($handle, -1, SEEK_END);            $contents = "";            $rowCount = 0;            do {                if (($str = fgetc($handle)) == "\n") {                    $rowCount++;                }                $contents = $str.$contents;                fseek($handle, -2, SEEK_CUR);            } while ($rowCount < $this->rowNum);            var_export(trim($contents, "\n"));            fclose($handle);        } catch(\Exception $e) {            var_export($e->getMessage());        }    }}class Test{    public function run()    {        $filePath = './TestData/GetFileLastNumRow/test.data';        $getFileLastNumRow = new GetFileLastNumRow(compact('filePath'));        $getFileLastNumRow->run();    }}$test = new Test();$test->run();

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.