亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频

EasySwoole Session 組件

由于在 Swoole 協(xié)程下,php 自帶的 session 函數(shù)是不能使用的。為此,EasySwoole 提供了獨立的 session 組件,實現(xiàn) phpsession 功能。

Session 組件目前最新穩(wěn)定版本為 3.x。針對 2.x 版本的組件使用文檔請看 Session 2.x,其他舊版本的組件使用文檔請以 Github 為準(zhǔn)。

組件要求

  • php: >=7.1.0
  • easyswoole/spl: ^1.3
  • easyswoole/utility: ^1.1
  • easyswoole/component: ^2.1

安裝方法

從框架 3.4.4 版本開始,框架默認(rèn)自帶該組件,不用再次再裝,其他版本請使用 composer 安裝,安裝方法如下所示。

composer require easyswoole/session=3.x

倉庫地址

easyswoole/session=3.x

基本使用

注冊 session handler

使用 session 前,需要先注冊 session handler。接下來的示例使用的 session handlerEasySwoole 內(nèi)置的 session handler,開箱即用。

注冊步驟如下:

  1. 首先我們定義一個 session 工具類繼承自 session 組件的 \EasySwoole\EasySwoole\Session 類。用戶可以自行定義類繼承并實現(xiàn)。下面為提供的一個參考工具類。

新增 App\Tools\Session.php,內(nèi)容如下:

<?php

namespace App\Tools;

use EasySwoole\Component\Singleton;

class Session extends \EasySwoole\Session\Session
{
    use Singleton;
}
  1. 注冊 session handler。修改 EasySwoole 全局 event 文件(即框架根目錄的 EasySwooleEvent.php 文件),在 mainServerCreate 全局事件和 HTTP 的 全局 HTTP_GLOBAL_ON_REQUEST 事件中注冊 session handler

具體實現(xiàn)代碼如下:

<?php

namespace EasySwoole\EasySwoole;

use App\Tools\Session;
use EasySwoole\Component\Di;
use EasySwoole\EasySwoole\AbstractInterface\Event;
use EasySwoole\EasySwoole\Swoole\EventRegister;
use EasySwoole\Http\Request;
use EasySwoole\Http\Response;
use EasySwoole\Session\FileSession;
use EasySwoole\Utility\Random;

class EasySwooleEvent implements Event
{
    public static function initialize()
    {
        date_default_timezone_set('Asia/Shanghai');

        // 可以自己實現(xiàn)一個標(biāo)準(zhǔn)的 session handler,下面使用組件內(nèi)置實現(xiàn)的 session handler
        // 基于文件存儲,傳入 EASYSWOOLE_TEMP_DIR . '/Session' 目錄作為 session 數(shù)據(jù)文件存儲位置
        Session::getInstance(new FileSession(EASYSWOOLE_TEMP_DIR . '/Session'));

        Di::getInstance()->set(SysConst::HTTP_GLOBAL_ON_REQUEST, function (Request $request, Response $response) {
            // TODO: 注冊 HTTP_GLOBAL_ON_REQUEST 回調(diào),相當(dāng)于原來的 onRequest 事件

            // 獲取客戶端 Cookie 中 easy_session 參數(shù)
            $sessionId = $request->getCookieParams('easy_session');
            if (!$sessionId) {
                $sessionId = Random::character(32); // 生成 sessionId
                // 設(shè)置向客戶端響應(yīng) Cookie 中 easy_session 參數(shù)
                $response->setCookie('easy_session', $sessionId);
            }

            // 存儲 sessionId 方便調(diào)用,也可以通過其它方式存儲
            $request->withAttribute('easy_session', $sessionId);

            Session::getInstance()->create($sessionId); // 創(chuàng)建并返回該 sessionId 的 context
        });

        Di::getInstance()->set(SysConst::HTTP_GLOBAL_AFTER_REQUEST, function (Request $request, Response $response) {
            // TODO: 注冊 HTTP_GLOBAL_AFTER_REQUEST 回調(diào),相當(dāng)于原來的 afterRequest 事件

            // session 數(shù)據(jù)落地【必不可少這一步】
            Session::getInstance()->close($request->getAttribute('easy_session'));

            // gc 會清除所有 session,切勿操作
            // Session::getInstance()->gc(time());
        });
    }

    public static function mainServerCreate(EventRegister $register)
    {

    }
}

EasySwoole 中使用 session

注冊 session handler 之后,我們就可以在 EasySwoole 控制器 的任意位置使用了。

簡單使用示例代碼如下:

<?php

namespace App\HttpController;

use EasySwoole\Http\AbstractInterface\Controller;
use EasySwoole\Session\Context;

class Session extends Controller
{
    protected function session(): ?Context
    {
        // 封裝一個方法,方便我們快速獲取 session context
        $sessionId = $this->request()->getAttribute('easy_session');
        return \App\Tools\Session::getInstance()->create($sessionId);
    }

    // 將值保存在 session 中
    public function set()
    {
        // $this->session()->set('key', 'value');
        // 把 'test_session_key' 作為鍵,time() 的值作為值,保存在 session 中
        $this->session()->set('test_session_key', time());

        // 響應(yīng)客戶端
        $this->writeJson(200, 'success!');
    }

    // 獲取 session 中的值
    public function get()
    {
        // $this->session()->get('key');
        // 從 session 中獲取 key 為 'test_session_key' 的值
        $ret = $this->session()->get('test_session_key');

        // 響應(yīng)客戶端
        $this->writeJson(200, $ret);
    }

    // 獲取 session 中所有數(shù)據(jù)
    public function all()
    {
        // 獲取 session 中所有數(shù)據(jù)
        $ret = $this->session()->allContext();

        // 響應(yīng)客戶端
        $this->writeJson(200, $ret);
    }

    // 刪除 session 中的值
    public function del()
    {
        // $this->session()->del('key');
        // 刪除 session 中 key 為 'test_session_key' 的值
        $this->session()->del('test_session_key');

        // 再次獲取 session 中所有數(shù)據(jù)并響應(yīng)客戶端
        $this->writeJson(200, $this->session()->allContext());
    }

    // 清空 session 中所有數(shù)據(jù)
    public function flush()
    {
        // 清空 session 中所有數(shù)據(jù)
        $this->session()->flush();

        // 再次獲取 session 中所有數(shù)據(jù)并響應(yīng)客戶端
        $this->writeJson(200, $this->session()->allContext());
    }

    // 重新設(shè)置(覆蓋) session 中的數(shù)據(jù)
    public function setData()
    {
        // 重新設(shè)置(覆蓋) session 中的數(shù)據(jù)
        $ret = $this->session()->setData([
            'test_session_key' => 1,
            'test_session_key1' => 2
        ]);

        // 再次獲取 session 中所有數(shù)據(jù)并響應(yīng)給客戶端
        $this->writeJson(200, $ret->allContext());
    }
}

然后訪問 http://127.0.0.1:9501/session/set (示例請求地址)就可以進(jìn)行測試設(shè)置 session,訪問 http://127.0.0.1:9501/session/flush (示例請求地址)就可以清空所有 session 數(shù)據(jù)。其他示例請用戶自行測試。

亚洲精品成人_精品成人一区_999视频在线播放_免费黄色在线_亚洲成人久久久_久久www免费视频
  • <kbd id="eqi2k"><code id="eqi2k"></code></kbd><cite id="eqi2k"><tbody id="eqi2k"></tbody></cite>
    久久综合婷婷综合| 亚洲一区二区在| 亚洲精品综合| 香蕉久久夜色| 99精品在线直播| 国产亚洲一级| 国产综合18久久久久久| 美女被啪啪一区二区| 久久日韩精品| 国产日韩欧美在线播放不卡| 欧美激情成人在线| 亚洲三区在线观看| 久久久久一区二区| 国产99午夜精品一区二区三区| 亚洲黄色成人| 国产综合色产| 国精品一区二区| 国产在线精品二区| 欧美久久在线| 国产精品激情电影| 极品日韩av| 91久久久久| 在线国产欧美| 亚洲高清视频一区二区| 一区二区视频欧美| 亚洲国产mv| 国产欧美激情| 免费在线国产精品| 久久精品一本| 久久免费黄色| 97久久精品午夜一区二区| yellow视频在线观看一区二区| av一区二区三区免费| 国产精品国产三级国产专区53| **亚洲第一综合导航网站| 国产视频亚洲| 久久激情中文| 成人在线视频电影| 久久亚洲国产精品日日av夜夜| 久久精品国产理论片免费| 日韩在线国产| 欧美精品午夜| 亚洲国产欧洲综合997久久| 一本久道久久久| 久久综合伊人77777麻豆| 91青青草免费在线看| 国产精品三区四区| 日韩经典在线视频| 欧美日本在线| 国产精品午夜av在线| av成人在线电影| 日本在线观看一区二区| 欧美私人啪啪vps| 亚洲在线网站| 精品午夜一区二区| 亚洲一区3d动漫同人无遮挡| 亚洲三级影院| 加勒比在线一区二区三区观看| 色综合电影网| 国产日韩欧美在线播放不卡| 国产精华一区| 伊人天天久久大香线蕉av色| 91久久久久| 免费毛片一区二区三区久久久| 欧美国产先锋| 成人av中文| 欧美~级网站不卡| 久久中文在线| 台湾成人av| 久久国产福利| 午夜精品亚洲一区二区三区嫩草| 伊人激情综合| 精品午夜一区二区三区| 在线成人h网| 国产在线一区二区三区播放| 欧美日韩视频在线一区二区观看视频 | 麻豆九一精品爱看视频在线观看免费| 国产精品久久久久久久天堂第1集| 色综合电影网| www日韩av| 亚洲视频精品| 欧洲精品久久| 乱码第一页成人| 欧美成人国产| 精品无人区一区二区三区| 亚洲国产清纯| 在线观看欧美激情| 国产亚洲自拍偷拍| 国产日韩一区二区| 亚洲国产日韩欧美| www久久99| 国产日韩欧美二区| 欧美福利在线| 欧美亚洲一级二级| 147欧美人体大胆444| 黄色在线成人| 亚洲国产精品久久久久婷婷老年 | 日韩精品久久久毛片一区二区| 亚洲美女视频在线免费观看| 色播亚洲婷婷| 国外成人免费视频| 国产精品久久久免费| 自拍视频一区二区三区| 久久99精品久久久久久三级 | 亚洲乱码国产乱码精品天美传媒| 91在线观看网站| 国产欧美日本| 亚洲国产日韩在线| 欧美特黄一区| 欧美成人一区二区在线| 日产国产精品精品a∨ | 99精品视频免费观看视频| 一区二区三区四区国产| 欧美日韩免费高清| 精品国产区在线| 99国产视频| 久久久久久久高潮| 中文日韩欧美| 国产日韩一区二区三区在线播放 | 国内久久精品| 最新国产精品久久| 亚洲视频在线二区| 涩涩涩999| 色女孩综合网| 日韩中文一区| 亚洲一区二区三区涩| 欧美日韩综合另类| 日韩国产伦理| 亚洲精品一区二区毛豆| 婷婷精品国产一区二区三区日韩| 欧美高清视频一区| 欧美18视频| 欧美一区二区影视| 日韩欧美一区二区三区四区五区| 奇米影视首页 狠狠色丁香婷婷久久综合 | 久久在线91| 成人看片视频| 久久精品日产第一区二区三区乱码| 久久国产精品亚洲77777| 3d精品h动漫啪啪一区二区| 蜜桃精品久久久久久久免费影院| 99在线精品视频在线观看| 国产精品免费一区二区三区观看| 先锋影音一区二区三区| 国产精品久久久对白| 狼狼综合久久久久综合网| 亚洲国产精品一区在线观看不卡| 亚洲综合首页| 99精品免费| 成人黄视频免费| 欧美在线一二三区| 欧美一区激情视频在线观看| 激情久久五月| **亚洲第一综合导航网站| 高清日韩一区| 欧美人与物videos另类| 一区二区三区四区五区视频 | 国产在线观看一区| 亚洲国产精品毛片| 日韩网站在线| 国产区欧美区日韩区| 视频一区二区三区免费观看| 激情五月***国产精品| 男人天堂欧美日韩| 精品999在线观看| 中文字幕一区二区三区精彩视频| 精品成人一区| 国产精品一区二区不卡视频| 亚洲国产日韩综合一区| 国产精品五区| 日日骚一区二区网站| 一区二区精品| 欧美日韩一区二区三区在线观看免| 中文字幕欧美日韩一区二区三区 | 91黄在线观看| 一本一本a久久| 91传媒视频免费| 欧美在线三级| 国产精品一区二区三区不卡| 亚洲欧洲在线一区| 成人av电影免费| 黄色精品免费| 欧美人与性禽动交精品| 一区二区精品在线| 日本一区二区在线| 久久狠狠一本精品综合网| 一本色道久久99精品综合| 91在线观看网站| 国内精品久久久久久久97牛牛| 国产亚洲二区| 先锋影音一区二区三区| 在线观看欧美激情| 精品一区日韩成人| 国产精品一区视频| 国产一区二区中文| 日韩精品久久一区二区三区| 91手机在线视频| 亚洲国产精品一区在线观看不卡| 欧美日韩精品中文字幕一区二区| 久久午夜av|