PHP realtime問題

最近無聊整緊個PHP realtime system,當然php就要hold Request,但係我server經cloudflare,hold到某一段時間就會timeout,我已經寫client會relaunch Request。

問題嚟啦,因為我行個backend會每一次行嘅時候update啲嘢,諗住會timeout,之後relaunch就可以幫我update到,但係貌似php唔會當係新Request,而係continue timeout前嘅Request,搞到唔會update啲嘢。

應該點解決?

你講到咁空泛... 而且係你D無聊野... 又冇講你而家係點做.. 人地點答你呢?

TOP

講到一舊舊甘啦, 應該系, BACKEND SERVER 有野UPDATE, 但PHP每分鐘會行一次(我估), 又吾識UPDATE...
系吾系甘?

TOP

個frontend會Request一個php, 個php係hold住個Request直至有新嘢去response(real time,所以會hold住個Request, comet)。

但係hold得耐,cloudflare就會origin timeout。

正常case: user frontend(web base) JavaScript XHTML Request data_A->cloudflare->server backend PHP->PHP update some data_B->PHP hold until new data_A found->PHP response data_A->cloudflare->user frontend->process data->relaunch Request->PHP當新Request handle.

問題case: user frontend(web base) JavaScript XHTML Request data_A->cloudflare->server backend PHP->PHP update some data_B->PHP holding until data_A found->holding too long->cloudflare return origin timeout(PHP仍然handle緊個Request->user frontend detect error->relaunch Request->PHP 當Request continue(無重新update data_B).

結果data_B不能被正確update.

TOP

我好少用php, User Request即 browser reload 完就完啦 , php 點樣hold住個Request呀...
除非JavaScript XHTML 果度set timeframe(可能每分鍾), 用HTTPXMLREQUEST架姐...甘REQUEST得就得(有野UPDATE), 吾得就吾得(無野UPDATE)
就系吾明php hold個REQUEST....

TOP

我好少用php, User Request即 browser reload 完就完啦 , php 點樣hold住個Request呀...
除非JavaScript XH ...
kckcp 發表於 2015-4-17 13:46

有無寫過comet? comet係long holding http Request, 最簡單就係PHP不斷loop住,唔end唔response,直到某個condition. 先response

TOP

你自己SET每幾分鐘,   無論有冇UPDATE都RETURN一次,   等CLIENT再發新REQUEST

http://www.misterngan.com/1024/% ... C%A1%E5%81%9A-push/

TOP

本帖最後由 ip4368 於 2015-4-17 14:53 編輯
你自己SET每幾分鐘,   無論有冇UPDATE都RETURN一次,   等CLIENT再發新REQUEST
twaiho2003 發表於 2015-4-17 14:01


頭先你未覆之前我諗到另一個方法, 因為php原來有得detect connection_aborted, 我個looping做多一個條件就係如果connection_aborted, 就exit loop.
固定某一個秒數就return都得, 因為cloudflare固定100sec就timeout.
下一個問題, 固定秒數好D定detect connection_aborted好D?
固定秒數就唔會回傳error, 但如果browser關閉就仍然hold住connection一段短時間.
connection_aborted就唔知實際php點做, 唔知會唔會好食資源

edited: just tested, connection_aborted穩定性好似低D, 有時detect唔切, 應該係因為cloudflare同client斷, 之後再同server斷, server再detect, 中間有delay, 所以detect出黎就係無abort過. 固定秒數一定穩定, 一定做足

TOP

頭先你未覆之前我諗到另一個方法, 因為php原來有得detect connection_aborted, 我個looping做多一個條件 ...
ip4368 發表於 2015-4-17 14:31



    謝謝,幫我test埋,  
題外話,  php 做push 會唔會佔好多resources,  轉做node.js 會唔會好好多?

TOP

Real time application please use WebSocket or Firebase, don't nt do stupid thing that is hard to implement, maintain and burn time

TOP