2014-04-02 102 views
0

在我的網站上,當用戶登錄時,每20秒約有一個AJAX請求,所請求的PHP正在使用sesssion(從session_start開始)。Ajax請求不更新會話?

我認爲打開網站+「無限」的ajax請求應該保持登錄的用戶登錄。

但是,我收到了我的一位用戶的迴應,他在很長一段時間後被註銷 - 這怎麼可能?請求的PHP不是分別請求PHP更新會話嗎?

什麼可能導致這些登錄?

在此先感謝。

+0

爲什麼不只是增加你的會話超時? – Steve

+0

在我看來,這似乎是單個最終用戶問題。請重現並分享此問題。 – blue

+0

它可能是一個JavaScript錯誤,停止Ajax請求,因此不續約會話,使其過期?這取決於你的網站的環境。我想你應該提供進一步的信息。關於。是否還有更多請求/操作正在進行? – Thomas

回答

1

嘗試把這樣的事情在你的頭

<?php 
ini_set('session.gc_maxlifetime', 60 * 60); //ini_set('session.gc_maxlifetime', Mulpitplyer*Seconds); 
session_start(); 
?> 

會話還可以丟棄如果用戶有一種「不穩定的」網絡連接如

+0

所以你認爲這是垃圾收集器造成的?如果是這樣,24 * 60 * 60(至少需要1天)是我的設置?當我沒有訪問PHP.ini時,我在哪裏設置?順便說一句:如果有更多的用戶,這會如何影響性能? –

+0

如果你沒有訪問你的php.ini,那麼在php代碼中設置它,就像我上面所做的那樣,只要將它改爲ini_set('session.gc_maxlifetime',24 * 60 * 60);儘管在我的經驗中,它是一個不穩定的互聯網連接 – Pwner

+0

有沒有修復與戰場不穩定的in.conn? –

1

this post,這可能是因爲瀏覽器的緩存AJAX請求可以通過在您的請求之前包含$.ajaxSetup({ cache: false })呼叫來解決。

+0

不錯的提示,但我不認爲這是造成我的問題。不管怎麼說,還是要謝謝你 –