鍍金池/ 問答/PHP/ PHP+JavaScript 任務(wù)進(jìn)度條實(shí)現(xiàn)思路、求指教

PHP+JavaScript 任務(wù)進(jìn)度條實(shí)現(xiàn)思路、求指教

需求是將PHP的執(zhí)行進(jìn)度發(fā)送給前端,界面是靜態(tài)的html和JavaScript,求大神指教下如何完成這個需求。。。。求思路,若能給個demo 就跪謝啦。

業(yè)務(wù):

在數(shù)據(jù)庫中讀取N條記錄,然后每操作完一條,就要發(fā)送進(jìn)度給前端,進(jìn)度條怎么算我知道,但不解的是我如何循環(huán)發(fā)送進(jìn)度給前端

回答
編輯回答
青黛色

通過您的問題分析,大致有兩種辦法:

1、長連接

可以用socket長連接,實(shí)時性和連接的狀態(tài)都能得到很好的保證。長連接多用于操作頻繁,點(diǎn)對點(diǎn)的通訊,而且連接數(shù)不能太多情況。我們公司的客服系統(tǒng)就是用的該方法。您可以參考mqtt協(xié)議來實(shí)現(xiàn)長連接的需求。

優(yōu)點(diǎn):在無消息的情況下不會頻繁的請求,耗費(fèi)資源小。
缺點(diǎn):服務(wù)器hold連接會消耗資源,返回?cái)?shù)據(jù)順序無保證,難于管理維護(hù)。
實(shí)例:WebQQ、Hi網(wǎng)頁版、Facebook IM。

2、ajax輪詢

客戶端定時向服務(wù)器發(fā)送Ajax請求,服務(wù)器接到請求后馬上返回響應(yīng)信息并關(guān)閉連接。 很適合web網(wǎng)站,我們公司項(xiàng)目中語音翻譯就是用的該方法。

優(yōu)點(diǎn):后端程序編寫比較容易。
缺點(diǎn):請求中有大半是無用,浪費(fèi)帶寬和服務(wù)器資源。
實(shí)例:適于小型應(yīng)用。

您的問題是由服務(wù)端主動通知給客戶端,那只能用長連接了,ajax輪詢是由于前端主動觸發(fā)的,數(shù)據(jù)庫讀取狀態(tài)前端是無法知道的,所以ajax輪詢無法使用。(推送也是這個理)

2018年7月23日 00:30
編輯回答
旖襯

不知道這個行不行
demo
圖片描述

github

2017年10月21日 04:41
編輯回答
溫衫

你的任務(wù)進(jìn)度是指什么?是文件上傳這種還是其他?

2017年7月29日 05:46
編輯回答
心上人

已執(zhí)行的條數(shù)占總條數(shù)的百分比,ajax輪訓(xùn)發(fā)送或websocket發(fā)送給前端

2018年8月30日 14:25