[TOC]
# Session
******
在計算機中,尤其是在網絡應用中,稱為“會話控制”。Session 對象存儲特定用戶會話所需的屬性及配置信息。這樣,當用戶在應用程序的 Web 頁之間跳轉時,存儲在 Session 對象中的變量將不會丟失,而是在整個用戶會話中一直存下去。
當用戶請求來自應用程序的 Web 頁時,如果該用戶還沒有會話,則 Web 服務器將自動創建一個 Session 對象。當會話過期或被放棄后,服務器將終止該會話。
注意:會話狀態僅在支持 cookie 的瀏覽器中保存。
<br />
## 會話實現原理
session 會話的原理大概如下所示:
* 用戶 A 第一次進入,沒有附帶任何標識信息(通常是 cookie)
* 服務端接收請求,給予用戶 A 一個會話標識(通常是 set_cookie,cookie 值將保密)
* 服務端根據會話標識,在服務器本地存儲用戶信息
* 用戶 A 端獲取到會話標識,存儲到用戶端本地
* 用戶 A 第二次請求,附帶會話標識(通常是 cookie)
* 服務端通過會話標識,找到服務端相應的用戶信息
<br />
## php 中的 session
php 已經內置封裝好了一個功能完整的會話管理,基礎用法為:
```php
<?php
sesson_start(); // 啟動新會話或者重用現有會話,發送 set-cookie 的響應頭,告訴瀏覽器設置一個 php_session 的 cookie 會話,會話 id 為 php 隨機產生,并在服務器端臨時目錄產生一個對應的 session 文件
$_SESSION['a'] = 1; // 存儲一個關于該會話 id 的值
session_destroy(); // 銷毀會話數據
// 當在腳本結束時,會將超全局變量 $_SESSION 中的值存儲進對應的 session 文件
```
<br />
可自行搜索了解詳細內容(如自定義 session_id,自定義存儲方式,自定義啟用會話方式等)
- 引言
- Introduction
- 運行模式
- php-fpm
- php-cli
- 基礎介紹
- 網絡協議
- ip
- tcp
- tcp
- http
- webSocket
- udp
- port端口
- 會話管理
- cookie
- session
- api/token
- linux基礎
- lnmp安裝
- 命令
- 進程管理
- 擴展安裝
- 端口監控
- 防火墻說明
- php7.0
- 部分新特性
- php回調/閉包
- 回調事件
- 閉包/匿名函數
- php多進程
- 多進程開啟
- 進程通信
- 進程信號
- 僵尸進程
- 孤兒進程
- 守護進程
- 同步/異步
- 阻塞/非阻塞
- 協程
- Swoole
- 初始Swoole
- 運行機制
- 生命周期
- composer使用
- EasySwoole
- 設計理念
- 組件說明
- 運行過程
- demo
- 提問的藝術