首頁  >  文章  >  後端開發  >  PHP中大數據處理思路實例分析

PHP中大數據處理思路實例分析

小云云
小云云原創
2018-03-10 09:15:105203瀏覽


遇到一個與大量資料處理報告相關的前一個版本的問題。之前我曾用同步處理程序程式碼解決過這個問題,只是運行的很慢很慢,這導致我不得不延長最大腳本運行時間10到15分鐘。有沒有更好的方式來處理PHP站點裡的大量資料呢?理想情況下我想在後台運行它,並且跑的越快越好。這個過程包括處理成千上萬條的財務數據,我是使用Laravel來重建這個站點的。
 

最好受歡迎的答案(來自spin81):

       人們都告訴你要使用隊列和諸如此類的東西,這是一個好主意,但問題好像並沒有出在PHP上面。 Laravel/OOP是很厲害的,但產生你所說的報告的程式似乎不應該你該有問題。對於不同的看法,我想看看你得到這些資料時所使用的SQL查詢。正如其他人所說,如果你的表單有成千上萬行那你的報告應該不會耗費10到15分鐘才完成。實際上,如果你沒做錯事的話可能會在一分鐘內就能處理成千上萬筆記錄,完成同樣的報告。

1.如果你正在做成千上萬個查詢,看看你能不能先只做幾個查詢。我之前曾使用一個PHP函數把70000個查詢降為十幾條查詢,這樣它的運行時間就從幾分鐘降到了幾分之一秒。
 
2.在你的查詢上執行EXPLAIN,看看你是否缺少什麼索引。我曾經做過一個查詢,透過增加了一個索引後效率提高了4個數量級,這沒有任何誇張的成分。如果你正在使用MySQL,你可以學這個,這種「黑魔法」技能會讓你和你的小夥伴驚呆的。
 
3.如果你正在做SQL查詢,然後得到結果,並且把很多數字弄在一起,看看你能不能像SUM()和AVG()之類的函數呼叫GROUP BY語句。跟普遍的情況下,讓資料庫處理盡量多的計算。我能給你的一點很重要的提示是:(至少在MySQL裡是這樣)布林表達式的值為0或1,如果你很有創意的話,你可以使用SUM()和它的小夥伴們做些很讓人驚訝的事情。
 
4.好了,最後來一個PHP端的提示:看看你是不是把這些同樣很耗費時間的數字計算了很多遍。例如,假設1000袋馬鈴薯的成本是昂貴的計算,但你並不需要把這個成本計算500次,然後才把1000袋馬鈴薯的成本儲存在一個陣列或其他類似的地方,所以你不必把同樣的東西翻來覆去的計算。這個技術叫做記憶術,在像你這樣的報告中使用往往會帶來奇蹟般的效果。
相關推薦:

#

PHP網站大數據大流量與高並發解決方案

#javascript基礎教學之六大資料類型用法詳解

有關大數據量測試的文章推薦

以上是PHP中大數據處理思路實例分析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn