2012-04-13 67 views
0

當我的腳本完成加載時,如何獲得一些文本以輸出。PHP腳本運行完成後顯示'Finished'文本

我的腳本獲取元數據的URL我希望發生的名單是:

點擊開始並文中說加載 當腳本完成它說,成品

的用戶可以單擊導出按鈕並拿取數據!

+4

在文件末尾添加'echo'Finished';'! – 2012-04-13 12:24:23

+1

你還可以閱讀關於ajax的一些信息 – gosukiwi 2012-04-13 12:25:21

+0

我不能把回聲完成,因爲我需要這個在頁面頂部顯示:( – RuFFCuT 2012-04-13 12:28:52

回答

1

由於PHP和Web的工作方式,您無法真正做到這一點。基本上,PHP的輸出在被髮送到客戶端之前被緩衝,所以即使您將print "Finished"置於腳本末尾,客戶端也會等待響應,直到整個腳本完成,然後整個輸出結果爲立即顯示。

還有腳本超時,這意味着如果您的腳本花費的時間超過配置的時間長度(默認值爲30秒),它會中止並向客戶端發送錯誤消息。

最優雅的解決方案是在腳本之外完成實際工作(如果花費的時間超過一分鐘,請考慮使用cron作業),並使用文件或數據庫在腳本和cron作業之間進行通信。所以,你會做什麼,然後是:

  1. 腳本將數據添加到處理隊列中,並顯示「加載中,請稍候」
  2. cron作業拿起數據並開始處理,在更新「完成百分比」字段隊列
  3. 腳本使用JavaScript每10秒左右重新加載一次,從隊列中讀取更新的狀態並顯示
  4. 當作業完成時,cron作業將隊列中的作業標記爲進入休眠狀態,直到更多作業可用的;該腳本看到該作業完成,顯示「完成」並停止重新加載。

這是基本設置;爲了獲得更舒適的用戶體驗,您可能需要使用某種Ajax心跳,而不是不斷重新加載。