2012-02-20 26 views
0

我在共享主機服務上有一個簡單的站點,我使用基本的PHP輸出緩存(將HTML輸出寫入文件)。該網站的數據不會經常更改,但是當它做了只有我做了更改,所以該網站沒有更新界面,因爲它不需要一個,我只需登錄到phpmyadmin界面並將修改上載爲SQL語句。如果MYSQL數據發生變化,是否有辦法立即觸發PHP文件系統緩存失效?

這很好,唯一的問題是隻有當緩存時間到期時,更改纔會立即出現在站點上。有什麼辦法可以從mysql觸發緩存失效,因此當我更改數據庫中的數據時,緩存被清除。例如,如果可能的話,我可以在更新中添加一個更多的sql行,以便somwehow在主目錄中調用外部程序,但是它是什麼?

如果不是那麼有沒有一些聰明的方式讓MYSQL通知PHP方有關數據更新而沒有PHP必須連接到數據庫(如果存在緩存版本的頁面,那麼它使用它並且不會連接到數據庫,因爲這是重點)。

+0

您是否可以在您的託管服務中使用cron(或其他配置重複任務的方式)? – Furgas 2012-02-20 12:25:35

+0

是的,cron可用,但允許的最小重複間隔時間爲30分鐘,所以對快速緩存失效沒有多大用處。當然,我可以嘗試在不同的開始時間啓動30個cron作業,以實現1分鐘的粒度,但這是一個笨拙的解決方案。 – Tom 2012-02-20 12:27:45

+0

你可以實現你自己的簡化cron(也就是定期檢查數據庫的php腳本),並運行一次。 – penartur 2012-02-21 05:09:11

回答

1

是有MYSQL通知有關數據更新PHP端,而不必連接到數據庫

沒有PHP,你不應該想這一些聰明的辦法。

您可以在您的網站上編寫一個特殊的PHP腳本,使緩存失效,並在每次更新數據庫時手動調用它。或者您可以將緩存存儲在數據庫中(而不是文件中)。

+0

是的,但它是一個額外的手動步驟。我可以這樣做,但我首先問了這個問題,如果有更好的方法。因爲我緩存以避免不必要的數據庫調用,所以將數據庫中的緩存存儲在數據庫類中是不利的。 – Tom 2012-02-20 11:57:05

+0

在db-to-php交互中,db是一個服務器,db是一個客戶端。服務器和客戶端之間的連接應由客戶端建立。另外,通常在共享託管數據庫服務上運行的服務器與您的PHP腳本運行的服務器不同,並且由於安全原因,在數據庫服務器上沒有相應的用戶(因此也就是您的「主目錄」) 。 – penartur 2012-02-20 11:59:19

+0

我相信你在你的php代碼中有一段。如果緩存爲空,則創建我的緩存對象。如果ResetCache爲true,則可以使用其他參數進行擴展,然後放下當前的緩存對象並創建一個新的緩存對象。但這是一種快速且骯髒的方式...在web應用程序的安全區域中執行額外步驟是更好的方法。 – glenn 2012-02-20 12:24:35

相關問題