我正在設置與產品匹配的車輛註冊查詢系統。我們從查找公司收到的數據只能存儲24小時。我認爲將其存儲在數據庫中可能太麻煩了。這是一個共享的1and1帳戶。我正在考慮使用PHP會話,並將它作爲數組存儲在會話中,使用註冊牌作爲會話ID。快速緩存解決方案PHP
這樣垃圾收集器應該確保我不會超過24小時。這工作會有什麼缺點嗎?
我正在設置與產品匹配的車輛註冊查詢系統。我們從查找公司收到的數據只能存儲24小時。我認爲將其存儲在數據庫中可能太麻煩了。這是一個共享的1and1帳戶。我正在考慮使用PHP會話,並將它作爲數組存儲在會話中,使用註冊牌作爲會話ID。快速緩存解決方案PHP
這樣垃圾收集器應該確保我不會超過24小時。這工作會有什麼缺點嗎?
會話對於每個與該網站進行交互的客戶端都是唯一的。客戶只能訪問它放入會話的信息,而不是任何其他人。所以會話在這種情況下不起作用。我會說使用memcache,但您可能無法在共享的1and1帳戶上執行此操作。我會推薦帶有「expires」字段的數據庫。您可以設置一個cron定期運行(即每隔15分鐘)以刪除已過期的記錄。
正如Brent發佈的那樣,最好將其存儲在數據庫中並帶有時間戳,並定期運行cron以刪除過期的條目。
但是,如果您不想使用數據庫,您還可以將檢索到的數據存儲到文件夾中的簡單文件中。
只需將文件名稱作爲註冊號碼並將數據存儲在其中。然後在cron中,您可以檢查filemtime並刪除超過24小時的文件。
filemtime要注意的一件事是文件信息由PHP緩存。因此,如果您重新檢索數據並簡單修改文件數據(而不是刪除並重新創建文件),則會返回舊的mtine。如果您更新現有文件的數據,要避免在您的cron和腳本中使用clearstatcache
。在MySQL數據庫和緩存檢查
究竟你希望緩存什麼?如果是來自外部資源的數據,PHP會話看起來不太合適。這些由客戶端連接到您的網站創建。默認會話長度是(我認爲)1小時 - 如果在共享主機上 - 您可能無法更改它。 – cloakedninjas