我試圖通過PHP說「X個用戶正在查看此頁面」。我將如何做到這一點?謝謝。正在檢測在線用戶:PHP
回答
這樣做沒有失敗的方法,但有幾個選項。
- 保存上次訪問數據庫的人。如果它在一定的閾值內(比如5分鐘),他們就在線。
- 這種方式不太可靠,但偶爾會ping(正確的術語?)帶有AJAX的服務器,告訴它你仍然在線。這使得用戶可以長時間瀏覽頁面,而不會超出其「在線」時間。
你甚至可以使用這兩者的組合。
如果你有很多流量,你應該緩存第一個選項。對於每個頁面加載,您都不想運行SELECT * FROM users WHERE lastvisit > UNIX_TIMESTAMP() - 18000
。另一種選擇是每隔一分鐘左右運行一次守護進程,並將在線用戶存儲在單獨的表中。
注意:這假設你真的意思是用戶,當你說它。如果您想要客人的人數在線,請參閱@ code_burgar的答案。
你真的不能這樣做,因爲你不知道某人何時停止瀏覽頁面。
- 創建一個數據庫表,其存儲:
- 用戶IP及USERAGENT組合
- 時間戳
- 在每個頁面加載,用戶IP及USERAGENT組合的存儲的哈希與電流沿的哈希時間戳記到數據庫中
- 查詢數據庫以查找具有落入NOW()的時間戳的唯一條目的數量 - X分鐘範圍 活躍用戶的10
- 顯示概數
通過
- 有一個間隔展開的基本思路催生了AJAX調用一個腳本,更新數據庫,以考慮用戶停留在頁面上比X長分鐘
這個答案將用於統計在線「客人」的數量。 – Jonah 2010-12-11 21:13:18
由於OP沒有具體說明他認爲「用戶」是什麼,您的評論可能與您的評論相關:) – 2010-12-11 21:14:55
網絡上沒有「正在查看」的概念,因爲所有事情都是非永久性連接。您可以得到的最接近的結果是「X個用戶在過去的N秒內瀏覽過此頁面」(如果您選擇的值足夠小,您可以說它幾乎相當)。
然後,有用戶根據用戶B的動作視圖數據,在PHP中,你需要有一定的持久性存儲,通常像MySQL的(但數據庫memcached的或了XCache可以工作,以及,如果你真的不擔心在服務器崩潰時丟失數據)。
只需將諸如「在時間Z處將用戶X查看的頁面Y」等項目寫入永久存儲器,並且在顯示頁面Y時,在過去的N秒內查詢頁面Y的所有視圖的存儲並計算該數量不同的用戶。
在SQL:
INSERT INTO visits (user, page, time) VALUES (?,?,NOW())
SELECT COUNT(DISTINCT user) FROM visits
WHERE page = ? AND time < NOW() - INTERVAL 10 SECONDS
你可以讓用戶通過定期提交AJAX請求(或爲你的頁面上的一個小iframe
重新加載本身每隔幾秒鐘告訴服務器「我還在看」沒有JavaScript)。
隨着時間創建一個會話變量:
$_SESSION['time']=time();
$time=time();
$query="INSERT INTO `online`(`name`, `time`)VALUES ('$name','$time')";
**// insert the time and username into the DB..**
if(time() - $_SESSION['time'] >=60)
**//check for ths condition if the user is available do the same thing again**
$_SESSION['time']=time();
$time=time();
$query="INSERT INTO `online`(`name`, `time`)VALUES ('$name','$time')";
在獲取在線用戶:
$t=time();
// this will help u to remove the records that are not useful for u.
// **thus helping you to use less space on your database**
mysql_query("DELETE from online WHERE '$t'-time >60");
最後,執行: 的mysql_query( 「SELECT * FROM在線」);
- 1. 檢測在線用戶?
- 2. PHP/AJAX檢查用戶上次在線
- 3. Kinect - 檢測用戶正在看什麼
- 4. PHP - 用戶在線腳本
- 5. 檢查用戶在PHP
- 6. Zedgraph在線檢測鼠標
- 7. 在OpenCV中檢測曲線
- 8. 如何在iPhone上檢測用戶更改的無線連接?
- 9. 檢測用戶是否正在使用iDevice
- 10. 用於在php中檢測用戶contry的包?
- 11. 如何檢測用戶在哪個頁面上使用php
- 12. 正在檢索用戶帳戶
- 13. 註冊檢測registred用戶PHP的
- 14. PHP檢測父圖像的用戶url
- 15. PHP - 如何檢測用戶位置
- 16. 檢測用戶瀏覽器PHP
- 17. PHP,javascript,cronjobs - Ajax測試如果用戶在線失敗
- 18. javascript檢測用戶正在查看頁面
- 19. 如何檢測用戶正在運行的操作系統?
- 20. 如何檢測用戶正在拖動滾動條旋鈕
- 21. 檢測用戶國家預選在php下拉列表
- 22. 在PHP中檢測用戶語言 - 穩定的解決方案
- 23. 用php檢測文件是否正在上傳或打開
- 24. 如何在Google App Engine的網絡應用程序中檢測在線用戶
- 25. 在PHP中檢測整數?
- 26. PHP - 在檢測HTTPS協議
- 27. 在php中檢測iPad?
- 28. 在PHP中檢測IPv6?
- 29. 在PHP中檢測register_argc_argv
- 30. 在PHP檢測OS運行
如果你有大量的流量,這不是一個好主意。 – 2010-12-11 21:08:05
這個問題應該回答你的問題:http://stackoverflow.com/questions/890820/find-out-how-many-users-are-online-in-php – thejh 2010-12-11 21:08:49