2012-03-07 95 views
1

我有一個腳本需要上傳的文本文件,解析它,然後插入相當多的行到數據庫中。這個過程大約需要一分鐘。在腳本運行之前終止與瀏覽器的連接

儘管我使用的是AJAX,但我不希望我的用戶在填充數據庫時不得不看到正在加載...。實際上,一旦分析成功完成,數據庫INSERTS將始終工作,因爲在分析過程中所有內容都經過驗證。

所以我需要做的是一旦解析成功,就返回一個JSON字符串{success:true,data:{cartons: 1000, batchname:"Batch1"}}。我這樣做,但瀏覽器不解析的響應,直到連接關閉(腳本是通過運行)是否有任何讓瀏覽器接受響應,因爲它來或我關閉與瀏覽器的連接我的PHP腳本繼續運行?

我正在使用ExtJS作爲處理AJAX的Javascript框架。有任何想法嗎?這已經讓我的大腦停留了大約一個星期。

+0

請看[這裏](http://stackoverflow.com/questions/138374/close-a-connection-early) – Mikhail 2012-03-07 05:58:04

回答

1

只要指定響應的主體內容的長度:

$out = 'Return this'; 
    header("Content-Length: " . strlen($out)); 
    header("Connection: close"); 
    echo $out; 
    flush(); 
    echo 'But do not return this'; 
    // create some file to show that script continues its execution 
    file_put_contents('script.is.running', ''); 

您也可以運行在後臺命令行其他腳本(無需等待其完成)或執行HTTP請求到腳本其中有ignore_user_abort功能。

+0

這看起來應該可以工作,我現在就去嘗試。 – 2012-03-07 06:00:31

相關問題