2013-04-28 57 views
0

當我試圖上傳Excel表和處理每一行存儲在我的數據庫。不幸的是,當我上傳更大的數據集時,這不起作用。相同的文件上傳兩次。這裏是相同的代碼片段。文件上傳兩次,當用戶點擊上傳,如果它需要更多的時間來處理

 ignore_user_abort(true); 
    $excelSheetReader = new Spreadsheet_Excel_Reader(); 
        $excelSheetReader->read($_FILES['bulk_data']['tmp_name']); 
        $sheets = $excelSheetReader->sheets; 


        if(count($sheets)>0){ 
         $sheets=$sheets[0]; 
        } 

        if($sheets !=NULL) { 

         for ($x = 1; $x <= $sheets['numRows']; $x++) { 

     set_time_limit(0); 
    //process each row 
    } 
}` 

`

回答

0

第一個可能的原因是檢查,如果用戶實際上傳文件的兩倍。 :)您應該確保用戶不會無意中多次上傳文件,例如通過點擊「提交」兩次。

如果用戶錯誤不是問題,那麼接下來要看的是請求類型。您使用什麼樣的要求上傳文件:PUTPOST? A PUT是冪等的,這意味着如果用戶的瀏覽器遇到錯誤(例如超時),它可以自動重複請求。但是,如果不首先詢問用戶,將永遠不會嘗試重新嘗試POST

如果您使用PUT,我建議您嘗試將請求類型更改爲POST並查看是否有幫助。

+0

用戶只上傳一次,但腳本第二次執行。我正在使用POST請求類型。 – karunakar 2013-04-28 18:30:06

+0

下一個愚蠢的問題是:代碼每次'POST'只運行一次,還是代碼可能在1'POST'請求​​中運行2次?下一步我將調試將證明兩個單獨的'POST'請求​​正在發生。如果我不能證明兩個單獨的'POST'請求​​正在發生,我會得出結論,代碼以某種我不期望的方式被調用。 – sigpwned 2013-04-28 18:38:52