人們都告訴你要使用隊列和諸如此類的東西,這是一個好主意,但問題好像并沒有出在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中大數據處理思路實例分析的詳細內容,更多請關注 其它相關文章!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答