2014-02-22 89 views
3

其實我已經在下載發生在XL ..但表中包含大量的記錄,它會比2min..so我想要的是運行此文件在後臺,當下載什麼更多文件結束後他得到在前面的是下載完成後彈出...等等,他可以去檢查下載folder..so他可以繼續做其他任務,而下載是在back..without發生讓他等待。 。我GOOGLE了幾個網站,但無法拿出輸出.. 我的下載代碼下載報告

$fileName = 'Enquires.xls' ; 
header("Content-type: application/vnd.ms-excel"); 
header("Content-Disposition: attachment; filename=$fileName"); 
$flag = false; 
$query=""; 
$query = "Select ackNo as AckNo, serialNo as SerialNo ,DATE(time) as EnquiryTime, product as Product , customerName as CustomerName , phone as Phone ,query as CustomerQuery,tech as CSO ,raf as RAF_Status,eng_comments as EngineerComments from customerEnquiry where ackNo like '".$locationprefix."%' and DATE(time) between '".$from."' and '".$to."'"; 

$result = mysql_query($query) or die('Error, query failed'); 

while($row =mysql_fetch_assoc($result)) { 
    if(!$flag) { 
     // display field/column names as first row 
     echo implode("\t", array_keys($row)) ."\r\n"; 
     $flag = true; 
    } 
     echo implode("\t", array_values($row)) . "\r\n"; 
    } 

回答

0

這樣做的最好的方法可能不生成該文件的用戶按下按鈕的那一刻。當他們按下該按鈕時,在數據庫中添加一條記錄以生成該文件,並使用每分鐘運行一次的cron來準備好它。在您的前端,有一小部分JavaScript可以每隔30秒或每分鐘輪詢一次服務器,以查看是否有可用的新下載。如果是這樣,請顯示彈出窗口。

+0

運行的cron每分鐘會引起負載的server..is有任何替代 – namratha

+0

運行一個cron,什麼也不做,但檢查數據庫是否需要做任何事情幾乎不會產生任何負載。它會產生儘可能多的負載來請求您網站上的任何其他PHP頁面。 – MueR

0

,你可以在後臺做耗時的任務是這樣的。你可以看看工作隊列。其中一些是Redis工作人員,Gearman,或者您甚至可以使用消息隊列來執行此操作。在後臺處理作業後,必須通知您的用戶。您可以輪詢服務器有關狀態或從服務器推送到客戶端。