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