2012-06-29 54 views
1

我有一個導入模塊,我必須逐行處理製表符分隔的txt文件。問題是該文件可能有超過250K行。我必須在MySQL數據庫中進行SELECT和UPDATE或INSERT操作。這可能會使服務器工作3-4個小時。 我想把一個狀態欄顯示在處理中我們在哪裏。我在處理文件的行時嘗試更新輸入,但瀏覽器無法真正輸出它,它只是凍結。我怎樣才能輸出處理的狀態?PHP處理製表符分隔線逐行進度/狀態欄

回答

1

您必須異步執行此操作,否則從瀏覽器到服務器的連接將超時。

您可以在數據庫中創建另一個表來保存文件處理的進度 - 您可以每處理100或1000行更新該表中的記錄。

在客戶端,您可以通過interogating後端並從該進度表中獲取值來更新javascript中的進度條。

+0

謝謝,聽起來不錯。如果我用jQuery AJAX做到這一點,它會輸出它嗎? – Ervin

+0

是的......我建議您啓動一個後臺進程來處理大文件 –

0

Maype一個簡單的flush()將做的工作:

// ... 

$done++ 
if (($done % 1000) == 0) { 
    print "$done of $total lines processed<br />"; 
    flush(); 
} 

// ... 

如果您使用Windows的服務器,你可能有一個看的文檔頁面的評論,似乎有一些怪癖: http://php.net/manual/en/function.flush.php