国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

[已解決] 基于workerman5.0 的 改造 PHP+HTML的混合開發(fā),Session處理方案

yidaodao

php+html 轉(zhuǎn)為 基于workerman5.0的改造

代碼舉例:
2 個文件,server.php 如下

<?php

require_once __DIR__ . '/init.php';

require_once __DIR__ . '/vendor/autoload.php';

use Workerman\Worker;
use Workerman\Protocols\Http\Session\FileSessionHandler;
use Workerman\Connection\TcpConnection as ConTcpConnection;
use Workerman\Protocols\Http\Request as HttpRequest;
use Workerman\Protocols\Http\Response as HttpResponse;

// 設置 Workerman 日志文件路徑
Worker::$logFile = DIR_LOG . '/workerman.log';

// 設置session文件存儲位置
FileSessionHandler::sessionSavePath(DIR_SESSION);

$w = new Worker("http://0.0.0.0:2345");

$w->count = 4;

// 初始化全局對象(常駐內(nèi)存)
$w->onWorkerStart = function($worker)
{
    //require_once __DIR__ . '/kii.php';
    //$worker->myObject = new MyClass();

    /**
     * 初始化容器,并設置到子進程
     */
    $container = new Container();
    $container->set('view', new Tmep());

    $worker->box = $container;

};

$w->onMessage = function(ConTcpConnection $tcp_connection, HttpRequest $http_request) use ($w)
{
    // 初始化響應對象
    $http_response = new HttpResponse();

    try
    {
        // 解析路徑部分
        $path = parse_url($http_request->uri(), PHP_URL_PATH);

        // 構(gòu)建文件路徑
        $baseDir = __DIR__.'/www';
        $filePath = $baseDir . $path . '.php';

        // 檢查文件是否存在
        if (file_exists($filePath))
        {
            $context['ggx'] = $w->box;  //對象
            $context['ggx']['request']  = $http_request;
            $context['ggx']['response'] = $http_response;

            // 使用匿名函數(shù),將容器注入到頁面作用域
            $get_render = function () use ($filePath,$context) {
                extract($context, EXTR_SKIP);
                include $filePath;
            };

            // 加載并執(zhí)行文件
            ob_start();
            $get_render();
            $responseContent = ob_get_clean();

            $http_response->withBody($responseContent);
        } else {
            // 文件不存在,返回404錯誤
            $http_response->withStatus(404);
            $http_response->withBody('403 Not Found');
        }

        // 向瀏覽器發(fā)送響應
        $tcp_connection->send($http_response);

    }catch (CoreException $fpmEx){
        //....
        $tcp_connection->send($http_response);
    }

};

// 運行worker
Worker::runAll();

2,假設目前是 業(yè)務時login, 對應請求域名是 www.aa.com/login
login.php 如下:

<?php 
try
{
    //實例
    if (isset($ggx))
    {
        /**
         * @var object $view
         * @var Workerman\Protocols\Http\Request $request
         */
        $view = $ggx->view;
        $request  = $ggx->request;
        $session  = $request->session();
        $response = $ggx->response;

        //業(yè)務相關(guān)
        $cookie_language = $request->cookie('language') ?? 'zh-cn';

        $userId =  $session->get('user_id');
        $session->set('user_key', 1001);
        $session->save();
    }
}catch (CoreException $ex){
    echo '.....';
}

/**
 * ***************************
 */

// 定義要傳遞給模板的數(shù)據(jù)
$data = [
    'errors' => ['Invalid username or password'.$ss],
    'time' => date('Y-m-d H:i:s'),
];

// 渲染模板
$responseContent = $view->render($data, '/www/login');

echo $responseContent;

3, 我希望session 在 login.php 里面 統(tǒng)一處理 如何處理比較好

以上就屬于 正常處理 沒有問題

338 1 0
1個回答

10bang

為什么不直接用webman?

??