PHP session 的運行流程_PHP教程

來源:互聯網
上載者:User
一直在使用session儲存資料,一直沒有好好總結一下session的使用方式以及其工作原理,今天在這裡做一下梳理。

這裡的介紹主要是基於php語言,其他的語言操作可能會有差別,但基本的原理不變。

在php中如何操作session

session_start(); //使用該函數開啟session功能

$_SESSION  //使用預定義全域變數操作資料

unset($_SESSION['key']) //銷毀一個session的值

簡單地操作,一切都是由伺服器實現;由於處理在後台,一切看起來也很安全。但是session採用什麼樣機制,又是怎樣被實現,並且如何來保持會話的狀態的呢?

session實現與工作原理

瀏覽器和伺服器採用http無狀態的通訊,為了保持用戶端的狀態,使用session來達到這個目的。然而服務端是怎麼樣標示不同的用戶端或使用者呢?

這裡我們可以使用生活中的一個例子,假如你參加一個晚會,認識了很多人,你會採取什麼方式來區分不同的人呢!你可能根據臉型,也有可能根據使用者的名字,或者人的身份證,即採用一個獨一無二的標示。在session機制中,也採用了這樣的一個唯一的session_id來標示不同的使用者,不同的是:瀏覽器每次請求都會帶上由伺服器為它產生的session_id。

簡單介紹一下流程:當Client Access Server時,伺服器根據需求設定session,將會話資訊儲存在伺服器上,同時將標示session的session_id傳遞給用戶端瀏覽器,瀏覽器將這個session_id儲存在記憶體中(還有其他的儲存方式,例如寫在url中),我們稱之為無到期時間的cookie。瀏覽器關閉後,這個cookie就清掉了,它不會存在使用者的cookie臨時檔案。以後瀏覽器每次請求都會額外加上這個參數值,再伺服器根據這個session_id,就能取得用戶端的資料狀態。

如果用戶端瀏覽器意外關閉,伺服器儲存的session資料不是立即釋放,此時資料還會存在,只要我們知道那個session_id,就可以繼續通過請求獲得此session的資訊。但是這個時候背景session還存在,但是session的儲存有一個到期時間,一旦超過規定時間沒有用戶端請求時,他就會清除這個session。

下面介紹一下session的儲存機制,預設的session是儲存在files中,即以檔案的方式儲存session資料。在php中主要根據php.ini的配置session.save_handler來選擇儲存session的方式。

這裡順便說明一下,如果要做伺服器的lvs,即多台server的話,我們一般使用memcached的方式session,否則會導致一些請求找不到session。

一個簡單的memcache配置:

session.save_handler = memcachesession.save_path = "tcp://10.28.41.84:10001"

當然如果一定要使用files檔案快取,我們可以將檔案作nfs,將所有的儲存session檔案定位到一個地方。剛才講返回給使用者的session-id最終儲存在記憶體中,這裡我們也可以設定參數將其儲存在使用者的url中。

執行個體問題

現有系統A, B; 假設A系統是可以獨立啟動並執行web系統,即可以和瀏覽器直接處理session, B系統是基於mobile的,需要調用A系統的功能介面,在保持A不改變的情況下,即登陸驗證,session儲存都不變的情況下,B系統能處理前端使用者的請求。

這裡提供的方案是使用PHP實現,在使用者登陸成功後,將儲存的session的session-id返回給B系統,然後B系統每次請求其他介面都帶session_id。A系統在session_start前加上session_id(session_id);這樣B系統就能安全的調用A。

http://www.bkjia.com/PHPjc/752501.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/752501.htmlTechArticle一直在使用session儲存資料,一直沒有好好總結一下session的使用方式以及其工作原理,今天在這裡做一下梳理。 這裡的介紹主要是基於php語...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.