當前位置:首頁 » 編程語言 » php不在線

php不在線

發布時間: 2023-03-06 06:13:17

『壹』 php網站中,如何判斷用戶是否是在線的狀態

普通http網站是一種無狀態連接,每次一個請求,一個應答,沒有長連接狀態。

但是可以通過記錄訪問時間,來確定用戶的狀態。

  1. 用戶登錄後,每次訪問,更新一下最近訪問時間在資料庫

  2. 在用戶頁面的公共部分,做一個定時輪詢,n秒一次(防止用戶打開頁面後放著不動,看資料或者做別的)

  3. 伺服器端做一個定時,將最近時間在n秒內的用戶設為在線狀態,將最近時間大於n秒的(說明已經關了頁面),設為離線狀態。 如果是普通 web空間無法配置定時器,可以在每次用戶訪問時處理一次(如果用戶量大,需要做時間判斷,防止同時訪問量多時多次重復處理,影響伺服器性能)

  4. 如果能確定一個用戶的訪問,只有一個瀏覽器窗口,可以在窗口裡加一個關閉事件(onbeforeunload),在此事件中發送一個退出請求,主動設為離線狀態。這樣狀態管理會更完美一些

這樣基本就可以完成一個在線狀態的管理。具體n 設為多少可根據情況而定,一般5-30秒都是合理的,太短了伺服器壓力比較大,太長了誤差會比較大

『貳』 php中如何判斷用戶是否在線

代碼很簡單,但實現邏輯自己要想明白,

網站頭公共文件加下邊代碼,意思即每個頁面都有包含下面這個php代碼,總之你懂,
這樣,只要有用戶登陸,或者打開別的頁面,就會往all_user表裡的action_time欄位添
加操作時間,當你檢測用戶是否在線,就把用戶操作時間action_time轉化為幾分鍾前,小時前,
,知道每個用戶是幾分幾小時前操作,就可以把幾分鍾前的顯示在線,而幾小時前的,顯示離線或幾小時前,

例如用戶15:30分登陸,打開幾個頁面,然後就關電腦或出門,這時all_user表已經記錄了操作時間
網站可以用wordTime($time)顯示他的操作時間離現在為2分鍾前,或20分鍾前,將直接顯示在線。
至於多少分鍾不操作算離線,自己調分鍾數
<?php
strtotime("now");//取伺服器當前時間戳,得到值如1533213376

$sql="UPDATEall_userSETaction_time=$action_timeWHEREuserid=$cook_userid";
//往用戶表裡更新操作時間,具體要填自己的表名和用戶名的欄位名

?>//======================下邊功能代碼可直接用
<?php
functionwordTime($time){
$time=(int)substr($time,0,10);
$int=time()-$time;
$str='';
if($int<=2){
$str=sprintf('在線',$int);
}elseif($int<60){
$str=sprintf('在線',$int);//60秒內
}elseif($int<300){
$str=sprintf('在線5',$int);//5分鍾內
}elseif($int<1800){
$str=sprintf('在線+',floor($int/60));//30分鍾內
}elseif($int<3600){
$str=sprintf('%d分鍾前',floor($int/60));//30-60分鍾內
}elseif($int<86400){
$str=sprintf('%d小時前',floor($int/3600));
}elseif($int<2592000){
$str=sprintf('%d天前',floor($int/86400));
}elseif($int<2592000*30){
$str=sprintf('%d月前',floor($int/2592000));

}else{
$str="";//date('Y-m-d',$time);
}

//調用方法,把值給到變數time如:$time="1533213376";echowordTime($time);結果將輸出20分鍾前
?>

不存在頻繁操作資料庫問題,因為打開網頁都要查詢mysql 用戶名等這些,也不差這條更新命令,

『叄』 php買賣家不在線系統自動退款是如何實現

分別記錄買家和賣家的最後登錄日期,當日期超過交易期限,自動退款

『肆』 php聊天系統怎麼樣判斷用戶是不是在線

這個其實有很多種處理方案,我給兩個方案吧,

方案一、用戶登陸成功後,將用戶的信息,如用戶ID保存到session當中去,然後我們去判斷session當中是否有當前用戶ID就可以判斷出該用戶是否在線了,然後用戶退出的時候,將此session清除就可以啦;

方案二、
用戶表設置一個欄位,用於保存用戶的登陸狀態,如果用戶登陸成功才設置成1,否則設置成0,然後當要判斷用戶是否登陸的時候,只要到資料庫當中去取這個值判斷就可以啦,用戶退出前,要先將這個狀態Update成0狀態就可以啦,不過這樣的話,當由於斷電而非法關閉的時候,用戶狀態就沒有辦法更新到資料庫當中啦;

兩個方案自認為還是方案一要好些啦;

熱點內容
給定一個演算法 發布:2024-05-19 17:50:08 瀏覽:863
戀愛生物種離線緩存 發布:2024-05-19 17:49:15 瀏覽:578
卡巴斯基伺服器如何連接外網更新 發布:2024-05-19 17:42:06 瀏覽:559
手機虛榮怎麼連接伺服器 發布:2024-05-19 17:41:47 瀏覽:729
linux修改保存文件 發布:2024-05-19 17:30:38 瀏覽:665
網路有你腳本 發布:2024-05-19 17:29:55 瀏覽:770
黎明我的世界伺服器 發布:2024-05-19 17:17:34 瀏覽:538
雷神g50如何設置安卓原生模式 發布:2024-05-19 16:50:04 瀏覽:120
c語言小數四捨五入 發布:2024-05-19 16:23:28 瀏覽:525
資料庫被注入攻擊 發布:2024-05-19 16:21:31 瀏覽:835