您好,登錄后才能下訂單哦!
小編給大家分享一下解決php中session不穩定的問題,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
php session不穩定的解決辦法:首先在配置文件中設置sessionState節點;然后把類設為可序列化的類;最后啟動“asp.net state service”即可。
解決session不穩定的問題
公司的系統一直以來都會出現session突然丟失的情況,昨天想了一個法子,但行不通,今天上午通過搜索資料解決了它。
昨天我是想通過新建一個數據表來存儲用戶登錄的信息,但是,要標記一個用戶的時候,想用IP來標記,覺得不太現實,因為有時候對外網的IP地址是一樣的,于是想用MAC地址來解決,對過sendarp的方法可以得到指定IP的MAC,但是這也僅僅適用于局域網,非局域網是無法實現的,于是這種思路到此宣告破產。除非在客戶端通過js去獲取再發送到服務端,但考慮到不用客戶端cookiess的話每次都要查很麻煩,于是放棄。
今天在網上發現,可以在配置文件中設置sessionState節點:
<sessionState mode="Off|InProc|StateServer|SQLServer" cookieless="true|false" timeout="number of minutes" stateConnectionString="tcpip=server:port" sqlConnectionString="sql connection string" stateNetworkTimeout="number of seconds"/>
必須有的屬性是
屬性 選項 描述 mode 設置將Session信息存儲到哪里 Off 設置為不使用Session功能 InProc 設置為將Session存儲在進程內,就是ASP中的存儲方式,這是默認值。 StateServer 設置為將Session存儲在獨立的狀態服務中。 SQLServer 設置將Session存儲在SQL Server中。
可選的屬性是:
屬性 選項 描述 cookieless 設置客戶端的Session信息存儲到哪里 ture 使用Cookieless模式 false 使用Cookie模式,這是默認值。 timeout 設置經過多少分鐘后服務器自動放棄Session信息。默認為20分鐘 stateConnectionString 設置將Session信息存儲在狀態服務中時使用的服務器名稱和端口號,例如:"tcpip=127.0.0.1:42424”。當mode的值是StateServer是,這個屬性是必需的。 sqlConnectionString 設置與SQL Server連接時的連接字符串。例如"data source=localhost;Integrated Security=SSPI;Initial Catalog=northwind"。當mode的值是SQLServer時,這個屬性是必需的。 stateNetworkTimeout 設置當使用StateServer模式存儲Session狀態時,經過多少秒空閑后,斷開Web服務器與存儲狀態信息的服務器的TCP/IP連接的。默認值是10秒鐘。
然后,啟動asp.net state service。
注意要把類設為可序列化的類!才可以加到session中。
System.Web.SessionState.HttpSessionState session = HttpContext.Current.Session; session.Add("user", obj); HttpContext.Current.Session.Add("user", obj); if (obj.USER_DIST_ID == "0000") { HttpContext.Current.Session.Add("sDistID", obj.USER_DIST_ID); } System.Web.Security.FormsAuthentication.SetAuthCookie(obj.USER_ID , false); 。。。
以上是解決php中session不穩定的問題的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。