搜了一個(gè)關(guān)于股票的提問(wèn),但沒(méi)有解決我的問(wèn)題。也搜了關(guān)于接口的問(wèn)答,貌似也沒(méi)找到下面這個(gè)情況,所以特別在此請(qǐng)教:
有個(gè)第三方的股票實(shí)時(shí)行情服務(wù)器,提供任意一支股票的http的json數(shù)據(jù)接口,該接口數(shù)據(jù)會(huì)實(shí)時(shí)更新。接口數(shù)據(jù)更新速度或許每秒多筆,或者好多秒甚至更長(zhǎng)時(shí)間一筆,因?yàn)檫x擇不同的股票代碼,更新頻率受交易影響而不一樣。
我這需要實(shí)現(xiàn)的是:
1、監(jiān)聽(tīng)這個(gè)接口數(shù)據(jù),如果數(shù)據(jù)有更新就讀取過(guò)來(lái),如果沒(méi)有更新則繼續(xù)監(jiān)聽(tīng)。
2、將讀取到的數(shù)據(jù)保存到數(shù)據(jù)庫(kù),同時(shí)發(fā)送給客戶端。
我的問(wèn)題是:
用worker如何監(jiān)聽(tīng)這個(gè)接口數(shù)據(jù)是否有更新?
先感謝大佬們答疑解惑。
可以用redis隊(duì)列
順便問(wèn)下是什么接口,免費(fèi)的嗎?
http://api.k780.com:88/?':$a_parm['apiurl'].'/?
$nowapi_parm['app']='finance.stock_realtime';
$nowapi_parm['symbol']='sh600000';
$nowapi_parm['appkey']='10003';
$nowapi_parm['sign']='b59bc3ef6191eb9f747dd4e83c99f2a4';
$nowapi_parm['format']='json';
定時(shí)發(fā)請(qǐng)求有個(gè)問(wèn)題就是不知道要隔多長(zhǎng)時(shí)間,如果每秒鐘讀取30次,這樣會(huì)不會(huì)很浪費(fèi)資源
我看這個(gè)實(shí)時(shí)行情接口是通過(guò)參數(shù)把股票代碼傳過(guò)去的,那就一次把所有股票代碼傳過(guò)去,30s一次請(qǐng)求應(yīng)該也還好吧
交易密集的時(shí)候需要每秒更多次,30s一次肯定是不行的。至于發(fā)送過(guò)去的參數(shù)倒不是問(wèn)題,問(wèn)題就是如何實(shí)現(xiàn)彈性監(jiān)測(cè),發(fā)現(xiàn)有數(shù)據(jù)就馬上讀取過(guò)來(lái)。
發(fā)現(xiàn)有數(shù)據(jù)就馬上讀取過(guò)來(lái),那就最好是建立長(zhǎng)鏈接,讓對(duì)方推數(shù)據(jù)過(guò)來(lái),不然靠主動(dòng)發(fā)請(qǐng)求拉數(shù)據(jù)肯定不夠及時(shí)
這種無(wú)法實(shí)現(xiàn)的
你提到的那種必須是對(duì)方推才能實(shí)現(xiàn),但是對(duì)方只有拉的接口,即意味著你不存在什么監(jiān)聽(tīng),只是一直輪詢拉取數(shù)據(jù)回來(lái),有新的才執(zhí)行更新操作.
對(duì)比推,這種的確很浪費(fèi)資源
確實(shí)如此呢,我在想,每秒鐘30次的輪詢的話,會(huì)不會(huì)時(shí)間一長(zhǎng)就把自己的服務(wù)器弄死了。這點(diǎn)確實(shí)還沒(méi)弄明白work的機(jī)制
我怎么記得股票信息是每秒更新一次啊,每秒30次沒(méi)用吧?。?!定時(shí)任務(wù)每秒一次就可以,如果怕剛拉取了數(shù)據(jù)接口就更新了那就0.5秒更新一下,最差是晚0.5秒應(yīng)該能接受吧。對(duì)方不提供推送接口就沒(méi)辦法實(shí)時(shí),只能定時(shí)輪循
不區(qū)分交易慘淡和火熱吧?看股票軟件,都是幾秒更新一次。好像在哪看過(guò)交易平臺(tái)也是一兩秒更新一次。一秒內(nèi)有多筆交易,按提交時(shí)間順序和量自動(dòng)撮合哪些成交哪些掛著。一秒成功一次應(yīng)該是正常的