首頁  >  文章  >  後端開發  >  php session 不穩定怎麼辦

php session 不穩定怎麼辦

藏色散人
藏色散人原創
2020-08-24 09:57:072397瀏覽

php session不穩定的解決方法:先在設定檔中設定sessionState節點;然後把類別設為可序列化的類別;最後啟動「asp.net state service」。

php session 不穩定怎麼辦

推薦:《PHP影片教學

解決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 不穩定怎麼辦的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn