這不干 php 的事。任何語言都一樣,也不干它們的事。
這是程式員要 take care 的事。程式是你寫的,只有你知道要處理什麼工作。
這一次 request 是要處理幾個檔案?或是幾 MB 的檔案?或是工作總共有幾個步驟?把這些資訊化為百分比就可以當作進度 (例如總共要處理 5 個檔案,已經處理一個就是 20%),把目前處理的時間除以目前百分比就是預計完成時間,如此而已。或許不是很準,但 windows 也都這麼做。
感謝大大回應,小弟補充在詳細點
上星期遇到一個問題,敝人寫了一份問卷調查功能,從第一天的100份到後來的1000份,從後台調閱統計數據的時間也從幾秒變幾十秒,目前是以「處理中」做為回應,但想進一步的改寫成「剩餘時間」,但實在不知道該如何計算及取得Mysql運算的時間…
希望大大在Mysql的運算時間這塊是否能給予指導
分別測試100份200份500份1000份的所花時間,然後找一個接近的函數當公式估計不同份數所需時間。
你把 web AP 當 windows AP 了。這是很常見的通病。
要是資料變 10000, 甚至 100000,那你也要 user 看你秀 1 小時的進度嗎?
在後台設定"當有新資料進來時,每小時產生統計結果"的靜態資料。如此,user 看時,是瞬間就出現統計結果。而不是一個 user 來看就操一次 DB,那幾十個人就會把你的資料庫癱瘓了。
當然你也可以再設計"智能"一點。在 100 份一下就即時產生,超過 100 份再用我上面說的定時產生。
wiseguy提到:
你把 web AP 當 windows AP 了。
解釋一下這句話。web 有太多地方會 timeout:
意思是這樣嗎 ?
當使用者按下去時,我的程式已經預設要處理5隻程式的時間(假設都是10秒)
當處理一隻程式完成就
N=N+1
5-N*10 送出
N=5 結束
那如果考慮網路狀況 ,
一隻程式監控網路速度計算傳輸的時間,加在第二行