2010-11-19 45 views
2

我需要在網站的首頁顯示一些基本統計信息,例如博客,成員和一些計數 - 所有這些都是基本查詢。使用PHP/MySQL顯示一些統計信息的最有效方式

我更喜歡找到一種方法來運行這些查詢說每30分鐘,並存儲輸出,但我不知道最好的辦法,我真的不想用cron。基本上,我不想每天進行數千次查詢來顯示這些結果。

關於這種類型函數的最佳方法的任何想法?

在此先感謝

+0

更新:我發現的最佳方式是將統計信息存儲在緩存中30分鐘。當緩存過期時,只需運行查詢並再次存儲到緩存中再過30分鐘即可。不需要cron。 – gus 2011-12-04 15:02:31

回答

4

不幸的是,cron是更好的和可靠的解決方案。

Cron是類Unix計算機操作系統中基於時間的作業調度程序。名字c​​ron來自「chronos」一詞,希臘語來自「時間」。 Cron使用戶能夠安排作業(命令或shell腳本)在特定時間或日期定期運行。它通常用於自動化系統維護或管理,儘管它的通用性意味着它可用於其他目的,例如連接到Internet和下載電子郵件。

如果你是輸出存入磁盤文件,
可以隨時檢查filemtime較小超過30分鐘,
之前繼續重新運行昂貴的查詢。

0

Cron Job是最好的辦法沒有別的我看到可行。

0

你有很多事情要做,我認爲好的不是最好的,你可以將數據存儲在桌面上並每30分鐘顯示一次。使用功能sleep()
我建議你看一看WordPress博客系統,以及專門的插件BuddyPress的..

和我一樣的前一段時間,並且每次有人加載頁面,查詢做作業和檢索數據庫中的信息,我remenber它是像

SELECT COUNT(*) FROM my_table

和我在我的情況下,職位的數目。

無論如何,有這麼多的方法。祝你好運。

別忘了cron永遠是你最好的朋友。

1

使用cron在某處存儲這種東西沒有任何問題。
如果您正在尋找更復雜的緩存方法,我建議您閱讀memcachedAPC,它們都可以爲您的問題提供解決方案。

+0

感謝我使用MySQL緩存,以便採取它 – gus 2010-11-19 12:59:52

0

使用cron是解決問題的最簡單方法。

不使用cron的一個很好的理由 - 即使沒有人會請求它們,您也會生成統計信息。

根據生成數據所花費的時間長度(您可能希望跟蹤以前的計數,並在時間戳大於上次運行時添加計數 - 使用適當的索引!),則可以觸發當請求進入時,這個數據看起來好像是陳舊的。

請注意,您應該將統計信息保留在數據庫中,並考慮如何實施互斥鎖,以避免多個請求嘗試同時更新緩存。

然而,正確的解決方案是每次更新統計添加記錄。除非你有很大的流量,否則開銷會很小。雖然'SELECT count(*)FROM some_table'會很快運行,但如果您不僅僅想要統計表中的行數(例如,如果博客和回覆被保存在同一個表中) )。事實上,如果您要在相關表上實施統計更新作爲觸發器,那麼您無需對您的PHP代碼進行任何更改。

相關問題