搜尋

首頁  >  問答  >  主體

file - php關於檔案操作-讀取一行處理一行之後把該行刪除

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

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

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

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

全部回覆(3)我來回復

  • 淡淡烟草味

    淡淡烟草味2017-06-26 10:51:01

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

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-06-26 10:51:01

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

    回覆
    0
  • ringa_lee

    ringa_lee2017-06-26 10:51:01

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

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

    回覆
    0
  • 取消回覆