需求我每天執(zhí)行一個定時任務(wù),把一個具有千萬條數(shù)據(jù)的日志分割成一些小的日志文件;然后啟動多個PHP進程,分別對這些小日志文件中的每行數(shù)據(jù)進行處理,處理過程是這樣的:每個PHP進程從各自負(fù)責(zé)的日志文件中逐行讀取,然后根據(jù)該行中的一個標(biāo)識去數(shù)據(jù)庫中查找是否有了該記錄,如果沒有則插入該行,如果已經(jīng)存在了就更新(該行的數(shù)據(jù)與數(shù)據(jù)庫中的數(shù)據(jù)進行合并);引發(fā)的問題這樣就出現(xiàn)了一個問題,就是可能存在多個PHP進程對同一條數(shù)據(jù)都在做處理,如果用Mysql鎖機制可以避免這個問題,但是這樣的話,就出現(xiàn)另一個問題,就是MySQL的高并發(fā)瓶頸,因為我是多個PHP進程同時在進行,一個進程要等待另一個進程解鎖后,才能操作數(shù)據(jù)庫。這樣我前面所做的分割日志、啟動多個進程這些操作就失去意義了,因為我在前面做日志分析時,啟的進程再多,運行的再快,到最后全都會卡在高并發(fā)操作數(shù)據(jù)庫這個瓶頸上,不知道大家對這類問題是怎么處理的?
大家對PHP多進程與MySQL的高并發(fā)瓶頸是怎么處理的
函數(shù)式編程
2019-04-08 11:16:42