php伺服器管理用戶離線時間(php伺服器管理用戶離線時間過長)

本文目錄一覽:

php利用session怎麼判斷用戶已離線

方法有好多種,但應該都跟心跳請求類似。

首先用戶打開一個頁面後,頁面裡面會有段js腳本來反覆請求一個地址,即判斷用戶是否在線的地址(跟新浪微博隔一段時間請求一個地址查看是否有新消息類似)

比如判斷頁面為A,打開的頁面為B ,則B 內的js腳本以ajax請求的方式每隔1分鐘來訪問A,A可以記錄下最後一次的請求時間,然後你就可以拿這個最後一次請求的時間來判斷用戶是否離線,比如B每隔1分鐘發送一次請求,如果最後活動時間與當前時間相差兩分鐘,就可以認為用戶已離線。

還有一種方法,就是利用js的onunload事件

當用戶關閉瀏覽器的時候,可以用onunload發送一個請求,註銷掉session,或者將用戶狀態置為離線,都可以,不過沒有上面靠譜就是,因為F5刷新頁面也同樣觸onunload事件

方法還有很多,結合你需要實現的功能和業務,多想想就出來了

PHP如何獲取本地時間與伺服器時間

PHP獲取伺服器時間和本地時間很簡單,可以用內置函數實現,具體代碼如下:

記得給分!!!

?php

 //獲取伺服器時間

    echo date(“Y-m-d h:i:s”);

 //獲取本地時間(也可以說是你所在時區時間)

    date_default_timezone_set(‘地區’); //地區:中國是PRC,或shanghai,chongqing都可

    echo date(“Y-m-d h:i:s”);

?

當然獲取本地時間還可以用JS實現,如下:

script type=”text/javascript”

function showLocale(objD){

var str,colorhead,colorfoot;

var yy = objD.getYear();

if(yy1900) yy = yy+1900;

var MM = objD.getMonth()+1;

if(MM10) MM = ‘0’ + MM;

var dd = objD.getDate();

if(dd10) dd = ‘0’ + dd;

var hh = objD.getHours();

if(hh10) hh = ‘0’ + hh;

var mm = objD.getMinutes();

if(mm10) mm = ‘0’ + mm;

var ss = objD.getSeconds();

if(ss10) ss = ‘0’ + ss;

var ww = objD.getDay();

if  ( ww==0 )  colorhead=”font color=\”#000000\””;

if  ( ww  0  ww  6 )  colorhead=”font color=\”#000000\””;

if  ( ww==6 )  colorhead=”font color=\”#000000\””;

if  (ww==0)  ww=”星期日”;

if  (ww==1)  ww=”星期一”;

if  (ww==2)  ww=”星期二”;

if  (ww==3)  ww=”星期三”;

if  (ww==4)  ww=”星期四”;

if  (ww==5)  ww=”星期五”;

if  (ww==6)  ww=”星期六”;

colorfoot=”/font”

str = colorhead + yy + “-” + MM + “-” + dd + ” ” + hh + “:” + mm + “:” + ss + ”  ” + ww + colorfoot;

return(str);

}

function tick(){

var today;

today = new Date();

document.getElementById(“localtime”).innerHTML = showLocale(today);

window.setTimeout(“tick()”, 1000);

}

tick();

/script

php做用戶在線與離線狀態

在用戶表裡加個session欄位存取時間戳。在文件頭每次刷新就更新它。一定時間不刷新就表示人物離線了。讀取這個會員數據的時候和當前時間戳對比小於一定數就離線了

怎麼判斷用戶是在線狀態還是離線狀態 asp

判斷用戶的在線狀態,後台代碼必須和前台代碼配合方能做到,通常前台代碼用javascript編寫,後台asp jsp php aspx都可以,以asp為例。

大體有兩種思路。

一是即時刷新型,也就是前台每隔幾秒向後台報告一下自己還在線。在後台資料庫內或是Application對象中寫入刷新的時間,後台管理員可以讀取用戶在線時間,如果超過規定的時間未刷新,則可判斷用戶已經離線。這種方式是使用最廣泛的方式,判斷準確無誤,缺點是佔用一定的系統資源,如果在線用戶數量太多,對伺服器的負荷壓力比較大。

二是來去報告型。即上線報告自己來了,離線時報告自己走了,不必定時向後台報告自己是否在線,只要沒報告自己離線,就認為仍然在線。技術上要依賴 DOM 的onload unload 事件,並在客戶端建立cookie,在onload事件中把打開的網頁數寫入cookie,如cookie(“OpenPageCount”)++,只有當 cookie(“OpenPageCount”)==1 時才向後台報告自己上線,大於1只是說明多打開了幾個網頁而已,不必頻繁向後台發送ajax請求,在unload事件中再把cookie減1,如cookie(“OpenPageCount”)–,直到為0才向後台發送離線狀態ajax請求。這種方式準確率也不錯,不必佔用大量的伺服器資源,主要工作都在客戶端判斷完成,缺點是兼容性不夠好,筆者測試IE8+、FF等主流瀏覽器支持得都不錯,但一些廣泛使用的山寨瀏覽器對DOM事件支持不好,如360、遨遊、TT、搜狗等。

相關關鍵技術點:

後台:資料庫、Application對象、日期間隔

前台:javascript DOM Event Cookie setInterval

PHP伺服器時間問題

date(『Y-m-d H:i:s』)

結果取出來顯示的時間總是於本地時間相差8個小時,我的本機是中國標準時間(GTM+8),問題應該是date()取的時間是格林威治時間,那應該怎麼配置一下PHP伺服器呢?

問題原因所在

從php5.1.0開始,php.ini里加入了date.timezone這個選項,默認情況下是關閉的

也就是顯示的時間(無論用什麼php命令)都是格林威治標準時間

和我們的時間(北京時間)差了正好8個小時。

有以下3中方法可以恢復正常的時間。

1、最簡單的方法就是不要用php5.1以上的版本

2、如果一定要用,而且不能修改php.ini,則需要在關於時間的初始化的語句的

上面加上 date_default_timezone_set (『XXX』);

3、一勞永逸,僅限能修改php.ini。打開php.ini查找date.timezone 去掉前面的分號

date.timezone = PRC,重啟http服務(如apache2或iis等)即可

原創文章,作者:IUUU,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/150054.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
IUUU的頭像IUUU
上一篇 2024-11-07 09:49
下一篇 2024-11-07 09:49

相關推薦

  • 解決docker-compose 容器時間和伺服器時間不同步問題

    docker-compose是一種工具,能夠讓您使用YAML文件來定義和運行多個容器。然而,有時候容器的時間與伺服器時間不同步,導致一些不必要的錯誤和麻煩。以下是解決方法的詳細介紹…

    編程 2025-04-29
  • Python中接收用戶的輸入

    Python中接收用戶的輸入是一個常見的任務,可以通過多種方式來實現。本文將從以下幾個方面對Python中接收用戶的輸入做詳細闡述。 一、使用input函數接收用戶輸入 Pytho…

    編程 2025-04-29
  • 想把你和時間藏起來

    如果你覺得時間過得太快,每天都過得太匆忙,那麼你是否曾經想過想把時間藏起來,慢慢享受每一個瞬間?在這篇文章中,我們將會從多個方面,詳細地闡述如何想把你和時間藏起來。 一、一些時間管…

    編程 2025-04-28
  • Python彈框讓用戶輸入

    本文將從多個方面對Python彈框讓用戶輸入進行闡述,並給出相應的代碼示例。 一、Tkinter彈窗 Tkinter是Python自帶的圖形用戶界面(GUI)庫,通過它可以創建各種…

    編程 2025-04-28
  • 計算斐波那契數列的時間複雜度解析

    斐波那契數列是一個數列,其中每個數都是前兩個數的和,第一個數和第二個數都是1。斐波那契數列的前幾項為:1,1,2,3,5,8,13,21,34,…。計算斐波那契數列常用…

    編程 2025-04-28
  • 時間戳秒級可以用int嗎

    時間戳是指從某個固定的時間點開始計算的已經過去的時間。在計算機領域,時間戳通常使用秒級或毫秒級來表示。在實際使用中,我們經常會遇到需要將時間戳轉換為整數類型的情況。那麼,時間戳秒級…

    編程 2025-04-28
  • Zookeeper ACL 用戶 anyone 全面解析

    本文將從以下幾個方面對Zookeeper ACL中的用戶anyone進行全面的解析,並為讀者提供相關的示例代碼。 一、anyone 的作用是什麼? 在Zookeeper中,anyo…

    編程 2025-04-28
  • 如何在ACM競賽中優化開發時間

    ACM競賽旨在提高程序員的演算法能力和解決問題的實力,然而在比賽中優化開發時間同樣至關重要。 一、規劃賽前準備 1、提前熟悉比賽規則和題目類型,了解常見演算法、數據結構和快速編寫代碼的…

    編程 2025-04-28
  • 使用JavaScript日期函數掌握時間

    在本文中,我們將深入探討JavaScript日期函數,並且從多個視角介紹其應用方法和重要性。 一、日期的基本表示與獲取 在JavaScript中,使用Date對象來表示日期和時間,…

    編程 2025-04-28
  • Python中獲取用戶輸入命令的方法解析

    本文將從多個角度,分別介紹Python中獲取用戶輸入命令的方法,希望能夠對初學者有所幫助。 一、使用input()函數獲取用戶輸入命令 input()是Python中用於獲取用戶輸…

    編程 2025-04-27

發表回復

登錄後才能評論