代碼舉例:
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)一處理 如何處理比較好
以上就屬于 正常處理 沒有問題