成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

thinkphp5支不支swoole攜程-創(chuàng)新互聯(lián)

這篇文章給大家分享的是有關thinkphp5支不支swoole攜程的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

在蔡甸等地區(qū),都構建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產品創(chuàng)新能力,以專注、極致的服務理念,為客戶提供成都做網站、成都網站建設 網站設計制作定制設計,公司網站建設,企業(yè)網站建設,品牌網站制作,全網整合營銷推廣,成都外貿網站制作,蔡甸網站建設費用合理。

首先,了解一下ThinkPHP的運行機制。

TP5運行機制

任何請求都會經過tp5的入口文件,載入框架的配置文件,啟動進程,然后處理請求。

thinkphp5支不支swoole攜程

在這個index.php的入口文件中,可以看到,它先定義的APP_PATH這個常量,然后引入的框架的啟動文件start.php,那我們就去看下start.php這個文件做了些什么。

thinkphp5支不支swoole攜程

在這里,它先加載了基礎文件base.php,然后啟動框架run,這個時候就開始處理請求了。

常規(guī)的nginx,Apache服務器,每次請求來到thinkphp,會清除靜態(tài)變量,重新加載配置文件。但是,swoole做的服務器,是常駐進程,在啟動服務后,會產生多個進程,來處理請求。我們要讓它選擇性的加載配置。

Swoole來做http服務器

<?php
$http = new swoole_http_server("0.0.0.0", 8888);

$http->set(
    [
        'enable_static_handler' => true,
        'document_root' => "/data/wwwroot/zhibo/public/static",
        'worker_num' => 5,//產生進程的個數(shù)
    ]
);
$http->on('WorkerStart',function ($ser,$worker_id){
    define('APP_PATH', __DIR__ . '/../application/');
    require __DIR__ . '/../thinkphp/base.php';
});
$http->on('request', function($request, $response) use($http) {
    if(isset($request->header)){
        foreach ($request->header as $k=>$v){
            $_SERVER[strtoupper($k)] = $v;
        }
    }
    if(isset($request->server)){
        foreach ($request->server as $k=>$v){
            $_HEADER[strtoupper($k)] = $v;
        }
    }
    $_GET = [];
    if(isset($request->get)){
        foreach ($request->get as $k=>$v){
            $_GET[$k] = $v;
        }
    }
    $_POST = [];
    if(isset($request->post)){
        foreach ($request->post as $k=>$v){
            $_POST[$k] = $v;
        }
    }
    // 執(zhí)行應用并響應
    //開啟緩存
    ob_start();
    try{
        think\Container::get('app', [APP_PATH])->run()->send();
    }catch (\Exception $e){

    }
    $res = ob_get_contents();
    ob_end_clean();
    $response->end($res);
    //$http->close();
});
$http->start();

代碼說明

(1)$http->onWorkerStart:啟動進程的時候,加載thinkphp的框架文件,base.php,但是這個時候,不能run,等待請求來了再去run。

(2)$http->onrequest:當收到客戶端的請求時,把swoole的header頭信息,server信息,get數(shù)據,post數(shù)據等消息轉化為常規(guī)的$_SERVER,$_GET等信息,可以適配tp5。

(3)最后開始run,這個時候需要把run得到的信息加載到緩存,然后再通過send()返回給客戶端。

Swoole適配thinkphp5

因為swoole是常駐進程,前一個請求的$_POST,$_GET請求不會銷毀,原因這個進程并沒有kill,這個時候,需要在接收請求的時候,將$_GET,$_POST置空。

swoole路由機制,總會從緩存中獲取有沒有這個請求,如果有,就不加載新的,所以,swoole常駐內存,會發(fā)現(xiàn)一直請求第一個url。除非重啟swoole服務器。

thinkphp5支不支swoole攜程

在thinkphp框架里面,修改Request文件,將兩個方法(pathinfo,path)里面的$this->path這個為空的判斷去掉,讓每次請求都去解析這個url。


驗證結果

thinkphp5支不支swoole攜程

thinkphp5支不支swoole攜程

感謝各位的閱讀!關于“thinkphp5支不支swoole攜程”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

網頁標題:thinkphp5支不支swoole攜程-創(chuàng)新互聯(lián)
文章出自:http://jinyejixie.com/article40/dhoheo.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供用戶體驗、企業(yè)建站響應式網站、建站公司品牌網站制作、外貿建站

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網頁設計公司
鱼台县| 琼中| 利川市| 瓦房店市| 广南县| 尖扎县| 东山县| 剑阁县| 东丰县| 宿松县| 汉寿县| 德州市| 政和县| 政和县| 乌苏市| 武胜县| 新昌县| 朝阳市| 西盟| 美姑县| 惠安县| 昌江| 巨野县| 二手房| 虹口区| 揭阳市| 佛学| 绥滨县| 乐陵市| 泸州市| 喀什市| 长阳| 铁力市| 左权县| 阳高县| 元朗区| 巨鹿县| 循化| 思茅市| 贵州省| 宜阳县|