file - php關於檔案操作-讀取一行處理一行之後把該行刪除
PHP中文网
PHP中文网 2017-06-26 10:49:01
0
3
922

1.現在有一個300M的檔案 需要把裡面的資料一行一行讀取出來,每行進行處理(無法做成冪等)。但是怕處理過程中系統掛掉,不知道該從哪一行再重新讀取,怕掛之前已經處理的行再次處理一遍
2.現在想到的方案是讀取一行處理一行之後把該行刪除,即時程式掛掉,再次執行從開始讀也不會讀取到原來已經處理的行
3.看一下各位大牛有沒有好的解決方案謝謝

//想讀取一行刪除一行 該如何操作或有更好的解決方案 避免同一行執行兩次

$fp = fopen($fileName, "r");
if (!$fp) {
    return -1;
}
$max = 40960; //40k

while (!feof($fp)) {
    $line = fgets($fp, $max);
    }
PHP中文网
PHP中文网

认证0级讲师

全部回覆(3)
淡淡烟草味

既然是規定一行一行讀取的,那麼何不寫一個腳本把文件先拆分成多個小文件(注意命名,比如Linux 中的split 命令),然後再寫個腳本循環讀取操作。

伊谢尔伦

我覺得你可以換個方式來實現你要的效果:你可以讀取一行,處理完這行後,在這行後面加個特殊的符號。循環遍歷每行就能知道哪些行是被處理過的。假如你的程式掛掉,再次執行的時候,直接搜尋那個特殊符號最後一次出現的地方。然後這個地方的下一行就是你該開始執行的地方了。

ringa_lee

另外寫個檔案, 記錄處理位置. 記行號也行, 整體檔案的偏移也行.

邊讀邊改文件, 效能太低吧.

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板