[英]How can I display currently online users, without a database? Or at least very efficiently. Preferably in PHP
對於我來說,這個問題已經有一段時間了。 抱歉,如果我寫了很多東西,我只是想弄清楚我已經嘗試過的內容,等等。
我將盡可能簡單地解釋我的問題的想法,因為復雜性是無關緊要的。 我們網站上隨時可能有多達80-90個用戶。 他們可能都將訪問同一頁面,我將其稱為result.php。 他們將通過ID的get變量(result.php?ID = 456)訪問不同的結果。 在任何一次記錄上,少於3個或4個用戶很可能會出現,並且有10000條以上的記錄。
我需要知道,在該頁面上該特定ID上的錯誤發生的時間少於20-25秒(這非常重要),並相應地更新該頁面。 一旦不再在頁面上刪除他們的名字,請盡快刪除。
目前,我正在使用一個jQuery腳本來調用php文件,並從數據庫中讀取正在訪問此特定ID的“當前正在訪問”用戶名,並且僅當他們訪問該文件的日期在最近25秒之內。 該文件還將刪除所有早於5分鍾的條目,以保持表格整潔。
對於20或30個用戶來說,這還不錯,但是現在負載增加了一倍以上,我注意到這是一種特別慢的方法。
我還可以使用哪些其他方法? 有沒有人有過類似情況的經驗?
我們目前使用的所有內容都使用PHP編寫,並帶有一些jQuery。 如果重要的話,我們正在由托管公司在異地管理的服務器上運行。
我遇到了一種稱為Comet或Comet Server的東西,聽起來像可能有幫助,但對於我來說,聽起來也非常復雜,目前遠遠超出我的理解。
查看websockets以獲取實時套接字連接。 您可以使用websocket實時(而不是輪詢)推送更新,以確保“當前在線用戶”的更改在毫秒內發送。
您需要的是帶有服務層的內存中緩存,用於維護站點上的活動狀態。 使用memcached可能是一個不錯的起點。 您的偽代碼將類似於:
如果您記錄某人訪問頁面的時間,則可以為服務停止“計數”他們訪問頁面的時間設置超時。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.