5 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
就你說(shuō)的這個(gè)情況,建議不要用請(qǐng)求的方式解決,用 crontab 加計(jì)劃任務(wù)在后臺(tái)運(yùn)行 php 腳本,數(shù)據(jù)庫(kù)查詢(xún)時(shí)分批處理,比如總共 100000 條,每次 1000 條;如果必須逐條處理且速度不是很快,建議一邊 fetch_row 一邊處理,避免先放入 array 再循環(huán)。記得根據(jù)執(zhí)行情況 set_time_limit 和數(shù)據(jù)庫(kù)連接的超時(shí)時(shí)間。

TA貢獻(xiàn)1847條經(jīng)驗(yàn) 獲得超7個(gè)贊
大量數(shù)據(jù)的時(shí)候交由任務(wù)系統(tǒng)去執(zhí)行。首先發(fā)起一個(gè)請(qǐng)求,由消息生產(chǎn)者將請(qǐng)求交給消費(fèi)者處理,并返回,避免等待出現(xiàn)超時(shí)。消費(fèi)者執(zhí)行多線(xiàn)程處理。建議使用Gearman,使用起來(lái)很方便,而且支持PHP接口。其它的類(lèi)似Workman,Swoole等都能實(shí)現(xiàn)。

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
一次不要取太多的數(shù)據(jù)(減少資源占用)
采用多進(jìn)程的方式,并行執(zhí)行(提高效率)
適當(dāng)?shù)氖褂?sleep

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
對(duì)性能要求不高,數(shù)據(jù)量也不高(10W內(nèi)都還好),可以直接定時(shí)任務(wù)(
cli模式
)。對(duì)性能要求稍高或數(shù)據(jù)量較大,可以用定時(shí)任務(wù)+隊(duì)列(參考數(shù)據(jù):20W數(shù)據(jù),每次約5條sql;隊(duì)列78個(gè)進(jìn)程,約20秒處理完)
- 5 回答
- 0 關(guān)注
- 285 瀏覽
添加回答
舉報(bào)