easyswoole - 基于swoole扩展实现的一款高性能php框架

全局變量 (針對 easyswoole/http 在 1.6 ~ 2.0)

swoole 協程當中,我們都知道類似 $_GET、$_SESSION 這樣的全局變量是不能安全使用的。原因是協程切換下會帶來數據污染問題。

驚喜

EasySwoolespl 包中,實現了一個 SplContextArray,并在主進程的位置,替換了這些全局變量,使得這些數據的訪問是安全的,并在請求結束后自動清理。從而我們可以在使用一些 FPM 環境下的組件包時沒有影響。

注冊

<?php

namespace EasySwoole\EasySwoole;

use EasySwoole\EasySwoole\AbstractInterface\Event;
use EasySwoole\EasySwoole\Swoole\EventRegister;
use EasySwoole\Http\GlobalParamHook;
use EasySwoole\Session\SessionFileHandler;

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

        // 配置 session,設置 session 數據文件存儲目錄為 EASYSWOOLE_TEMP_DIR
        $handler = new SessionFileHandler(EASYSWOOLE_TEMP_DIR);

        GlobalParamHook::getInstance()->hookDefault();

        // 如果不需要 session 請勿注冊
        GlobalParamHook::getInstance()->hookSession($handler, 'easy_session', 'session_dir');

        // onRequest v3.4.x+
        \EasySwoole\Component\Di::getInstance()->set(\EasySwoole\EasySwoole\SysConst::HTTP_GLOBAL_ON_REQUEST, function (\EasySwoole\Http\Request $request, \EasySwoole\Http\Response $response) {
            // 替換全局變量
            GlobalParamHook::getInstance()->onRequest($request, $response);
        });

        // afterRequest v3.4.x+
        \EasySwoole\Component\Di::getInstance()->set(\EasySwoole\EasySwoole\SysConst::HTTP_GLOBAL_AFTER_REQUEST, function (\EasySwoole\Http\Request $request, \EasySwoole\Http\Response $response) {

        });
    }

    public static function mainServerCreate(EventRegister $register)
    {

    }
}

EasySwoole 3.4.x 版本之前:可在項目根目錄的 EasySwooleEvent.php 中看到 onRequestafterRequest 方法。

事件注冊完畢后,即可使用 $_GET、$_COOKIE$_POST$_FILES、$_SERVER、$_SESSION

使用

<?php

namespace App\HttpController;

use EasySwoole\Http\AbstractInterface\Controller;

class Index extends Controller
{
    function index()
    {
        var_dump($_GET['a']);
        if (isset($_SESSION['b'])) {
            var_dump('last session is ' . $_SESSION['b']);
        }
        $_SESSION['b'] = time();
    }
}

注意

該特性需要 1.6 版本以上的 http 組件庫

"easyswoole/http": "^1.6"
主站蜘蛛池模板: 上海况胜_玻璃反应釜厂家_双层玻璃反应釜_实验室玻璃反应釜 | 铜陵爱家装饰有限公司官网| 世博磁力泵,耐腐蚀磁力泵,耐酸碱磁力泵,氟塑料磁力泵-苏州冠裕机电科技有限公司 | 捏炼机_密炼机_炼胶机_平板硫化机-青岛光越橡胶机械制造有限公司 | 移动破碎机,欧版颚式破碎机-淄博巨鑫矿山机械有限公司 | 制砂机_选矿设备_耐磨件-郑州富嵩机械设备有限公司 | 清洁公司| 保洁公司| 东莞清洁| 东莞保洁|壹壹清洁 | 影像测量仪|检测设备定制|平面度测量仪|三坐标测量机|广州市海科思自动化设备有限公司-400-0528-668 | 郑州四棉纺织有限公司-现代化纺织企业 | 宁波雷豹机电科技有限公司|雷豹冷风机|雷豹工业大风扇|MFC18000|MFC16000|MFC6000|EF3622|EF4222|EF4822|移动工业蒸发式冷风机空气冷却器|大型工业空调扇|雷豹移动式工业大风扇|雷豹大风扇|生产厂家|公司官网 | 苏州宣传片制作_企业展厅设计_博物馆设计_展馆设计_方行舟设计公司 | 永康微网站建设、永康手机网站建设、永康营销型网站建设、永康外贸网站建设、永康网站托管、永康网络公司—英汇网络 - 永康市英汇网络技术有限公司 | 温州方圆仪器有限公司 工业自动化|自动化设备 - 温州方圆仪器有限公司 | 模具配件加工厂|东莞模具配件加工|模具配件加工厂|精密塑胶模具配件|东莞市优迪精密模具制品有限公司 | 语音芯片_蓝牙芯片_ble数传芯片_蓝牙数传模块厂家_拓达半导体-蓝牙数传芯片模块原厂 | 清河县隆鑫密封件有限公司,汽车用密封条,配电箱柜、集装箱密封胶条,建筑门窗、家具用密封条,无毒环保医用密封条,船舶、农机用密封条,异型产品 | 津成电线电缆价格,天津津成线缆,津成线缆销售电话,天津津成线缆批发电话-天津市津成电线电缆有限公司 | 意优教育|意大利留学中介_意大利留学费用_意大利申请条件_北京意大利语培训学校 | 污水处理控制系统设计_plc编程控制柜_电气成套设备生产厂家_合肥鸿昇自动化 | 上饶市新达新包装材料有限公司| 透明捆扎带_束带机打包带_束带机纸带_热封纸带机_上海得亿束带机包装材料有限公司 | 铝合金锻造|链轮曲柄-同力铝业股份有限公司 | 四氟瓶塞-塑料离心机-双联恒温水浴锅-常州天瑞仪器有限公司 | 南京企业宣传片制作,广告形象片,影视制作,宣传片拍摄,微电影拍摄制作公司 | 塑木地板,塑木栏杆,塑木地板价格,塑木地板厂家—浙江尚元塑木制品有限公司 | 上海教师招聘考试网_上海编制教师招聘网 | 数控落地镗铣床_数控刨台式镗铣床_数控龙门加工中心-青岛辉腾机械设备有限公司 | 机锋网-畅享科技品质生活,尽在机锋网 | 萘系减水剂|缓凝|早强|聚羧酸|混凝土|石膏板|管桩减水剂厂家-潍坊英宏建材有限公司 | 无线对讲机系统-中继台-山区隧道信号覆盖-贝亚特 | 无锡市恒威工业气体有限公司-工业高纯气体_高纯度特种气体 | 云南昆明微信公众号小程序开发公司|抖音|网站建设APP制作-鸿翥网络 | 组合式空调机组-吊顶式新风换气机-消防高温排烟风机-德州宏楚空调设备有限公司 | 螺旋钢管厂家,临沂瑞源工贸有限公司 | 蒸汽流量计_涡轮流量计_涡街流量计_雷达液位计_污水流量计_分体式_大口径工业流量计-江苏长顺仪表 | 氯化氢钢瓶回收_氯化氢气体钢瓶回收_山东言赫化工有限公司 | 郑州环球重工机械有限公司建筑垃圾处理专题网站 | 制砂生产线,河卵石制砂机,洗砂机-巩义市铭德矿山设备厂 | 铜陵爱家装饰有限公司官网| 快达物流:电商和微商的仓储物流外包和托管服务-北京快达国际物流服务有限公司官方网站 | 郑州办公家具厂_河南办公家具厂_河南办公家具-河南华诺家具 |