程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php有規律大文件的讀取與寫入

php有規律大文件的讀取與寫入

編輯:關於PHP編程

       這幾天在做一個東西.研究PHP讀取行數較多的文件(大概上百萬行).考慮到效率問題.進行了簡單的研究.總結如下

      第一條.file()函數的效率問題.

      file()函數的效率很底下 如果是有規律的文件.比如每行一條相應數據.那麼盡量不要是用file()函數

      可以使用file_get_contents()然後用explode切割.這樣效率會快三分之一

      舉個例子:

      文件樣式如下:

      11111n

      22222n

      33333n

      44444n

      55555n

      .....n

      nnnnnnnnnnnn

      如果用file($file)讀入的話.耗時很長.

      可以用如下方法explode("n",file_get_contents($file));效率會快很多.

      第二條,數組的遍歷方式.

      數據已經被讀入數組了.下面就是遍歷了.

      我所需要的是確定數組中有無一個值的存在,比如說44444是否在數組中.首先想到的是in_array()

      不過實驗了下發現效率很低下.於是參考別人的代碼想到一個辦法.把數組翻轉過來.變成所有值都為1.原來的值變成了索引.那麼只要我在if裡寫($arr[索引]==1)去判斷.果然效率高出很多.

      在數組的遍歷過程中.如果數組個頭非常大,並且數組中的數據並不是全能用到的話,最好把用來遍歷的數組抽出來.這樣會提高很多效率.

      第三條,數組的存儲.

      把計算過後的數據保存起來.存在一個文件中.考慮了三種方法.一種是直接寫成php文件.一種是serialize,一種是json串.

      第一種方式

      直接寫入文件保存成PHP

      需要的時候直接require進來.

      第二種方式.把變量serialize然後file_put_contents()進入文件.使用的時候unserialize就ok.

      第三種方式和第二種類似.只不過寫成了json串.

      經過測試.發現第二種效率最高.第三種其次.和第二種效率不相上下.第一種最慢.和我預想的差距很大.真是大跌眼鏡.

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved