好吧,所以我建立一個網站,人們可以發佈新聞,評論,問題等。人們也可以評價所有這些對象,最喜歡的大多數,共享他們等等。該網站是PHP + MySQL。我在PHP中編寫了一個腳本,它可以執行以下操作:最有效的方法來計算在網站上的對象'流行'
- 獲取所有評論以及在過去5分鐘內添加的分數。向每個評論對象的流行度變化添加一條記錄到'流行'表。
- 獲取所有新聞和分數/觀點/收藏夾/分享添加到他們。計算每個新聞報道的受歡迎程度(考慮到步驟1中附加的評論的受歡迎程度的變化),並將記錄插入流行度表中,同時每個新聞對象的受歡迎度發生變化。提問
- 重複步驟2和其他對象類型
我試圖運行此腳本(它實際上是一個symfony的任務),每5分鐘一個cron作業和PHP開始窒息,吃了我所有的服務器資源。
運行後臺分析腳本的首選方法是根據MySQL DB中的數據計算新數據,然後將計算後的數據插入到數據庫中?我確定我在這裏錯過了一些基本的程序。我應該注意到數據庫位於不同的服務器上,並且該服務器沒有資源問題。這個問題似乎侷限於應用程序服務器上循環遍歷對象的PHP窒礙,計算流行度(簡單計算)以及插入數據庫。
感謝
- 編輯
如何複製DB只是用於計算中使用的服務器。我可以使用複製的數據庫在計算服務器上運行流行度腳本,並將計算的流行度記錄插入到活動數據庫中。這當然會稍微延遲,但這並不是什麼大問題。我不確定這是否會解決PHP資源消耗問題。
好了,所以我原本打算只依據用戶如何打進對象本身的對象的知名度。從那以後,我決定嘗試通過一系列因素來計算對象的流行度(通過上述方法),其中一個因素是所有附加到對象的註釋的流行度。所以首先我需要計算的意見普及,然後根據雙方的比分消息變化,查看變化的消息普及,評論熱度變化等 – Marc 2011-02-23 15:09:47
我已經添加了一些更多的信息給我的答案 – Ivan 2011-02-23 15:42:58
伊萬,多查詢修復了一切!現在快得多。謝謝! – Marc 2011-03-10 20:41:41