开发方式
代码开发
可视化开发
代码仓库
Ai编程助手
UTCms
UTForum
文档有错误?发信:usualtool@qq.com
定位至目录
FPM普通调度 // UsualTool 模块控制器 use usualtool\Middleware\Dispatcher; use usualtool\Middleware\FinalHandler; // 创建同步调度器(默认) $dispatcher = Dispatcher::create(); // 登录检查中间件(直接使用你的代码) $authCheck = function ($request, $next) { if (!isset($_SESSION['uid'])) { header('Location: ?m=login'); exit; } return $next->handle($request); }; // 执行中间件链 $dispatcher ->pipe($authCheck) ->dispatch($_REQUEST, new FinalHandler(function () use ($app) { // 渲染页面 $app->Open('index.cms'); }));
Swoole协程 // Swoole协程模式 use Swoole\Http\Request; use Swoole\Http\Response; use UsualTool\Middleware\Dispatcher; use UsualTool\Middleware\FinalHandler; $server = new Swoole\Http\Server('0.0.0.0', 9501); $server->on('request', function (Request $req, Response $res) { // 模拟从 Cookie 或 Token 获取 uid(不能用 $_SESSION) $uid = null; if (isset($req->cookie['uid'])) { $uid = (int)$req->cookie['uid']; } elseif (isset($req->get['uid'])) { $uid = (int)$req->get['uid']; } $utRequest = [ 'uri' => $req->server['request_uri'] ?? '/', 'uid' => $uid, 'get' => $req->get, 'post' => $req->post, 'cookie' => $req->cookie ]; // 显式使用 Swoole 模式 $dispatcher = Dispatcher::create('swoole'); // 认证中间件(不能 exit!必须 return) $authCheck = function ($request, $next) { if (empty($request['uid'])) { // 返回重定向指令(结构化数据) return [ 'type' => 'redirect', 'location' => '?m=login' ]; } return $next->handle($request); }; // 最终处理器 $finalHandler = new FinalHandler(function ($r) { return [ 'status' => 'success', 'message' => 'Welcome to admin panel!', 'uid' => $r['uid'] ]; }); // 执行调度 $result = $dispatcher->pipe($authCheck)->dispatch($utRequest, $finalHandler); // 处理响应类型 if (is_array($result) && ($result['type'] ?? null) === 'redirect') { // 发送 302 重定向 $res->status(302); $res->header('Location', $result['location']); $res->end(); } else { // 发送 JSON 响应 $res->header('Content-Type', 'application/json'); $res->end(json_encode($result)); } }); echo "Swoole server started on http://127.0.0.1:9501\n"; $server->start();
Workerman异步 // Workerman异步模式 use Workerman\Worker; use UsualTool\Middleware\Dispatcher; use UsualTool\Middleware\FinalHandler; // 创建 HTTP Worker $worker = new Worker('http://0.0.0.0:8787'); $worker->onMessage = function ($connection, $request) { // 从 GET 参数获取 uid $uri = $request->uri(); parse_str(parse_url($uri, PHP_URL_QUERY) ?: '', $queryParams); $uid = $queryParams['uid'] ?? null; $utRequest = [ 'uri' => $uri, 'uid' => $uid, 'get' => $queryParams ]; // 显式使用 Workerman 模式 $dispatcher = Dispatcher::create('workerman'); // 认证中间件 $authCheck = function ($req, $next) { if (empty($req['uid'])) { // 构造 HTTP 302 响应字符串 return "HTTP/1.1 302 Found\r\nLocation: ?m=login\r\nConnection: close\r\n\r\n"; } return $next->handle($req); }; // 最终处理器 $finalHandler = new FinalHandler(function ($r) { return "HTTP/1.1 200 OK\r\nContent-Type: text/plain\r\nConnection: close\r\n\r\n" . "Hello UID {$r['uid']}! You are in Workerman."; }); // 执行调度 $response = $dispatcher->pipe($authCheck)->dispatch($utRequest, $finalHandler); // 发送响应(字符串) $connection->send($response); }; echo "Workerman server started on http://127.0.0.1:8787\n"; Worker::runAll();
始于2018年,UT框架版权归原作者所有 开放、包容、发展。 工单 | 团队 | 蜀ICP备2024067013号