当前位置: 首页 > 后端技术 > PHP

纯属娱乐——一个基于Swoole的小框架

时间:2023-03-30 04:05:00 PHP

swoole使PHP开发者能够编写高性能的异步并发TCP、UDP、UnixSocket、HTTP、WebSocket服务。Swoole可广泛应用于互联网、移动通信、企业软件、云计算、网络游戏、物联网(IOT)、车联网、智能家居等领域。使用PHP+Swoole作为网络通信框架,可以大大提高企业IT研发团队的工作效率,更加专注于开发创新产品。总之,这个库可以让PHP常驻内存,提供httpserver、tcpserver等功能。docker-compose.xml利用docker快速生成一个swoole扩展的PHP环境。php-cli的镜像默认运行在目录version下public目录下的server.php文件中:'2'services:php:image:salamandermh/php-cli:1.0volumes:-./src:/var/www-./php/php.ini:/usr/local/etc/php/php.iniports:-8888:8888路由分配因为swoole提供了http服务器功能,所以swoole会告诉我们当前$uri和$的数量http_method,所以可以继续使用路由库分发$uri。这里选择了FastRoute。当然,其他库肯定是可以的。server.phpaddRoute('GET','/',$prefix.'IndexController:show');});$http->on("start",function($server){echo"Swoolehttpserverisstartedathttp://0.0.0.0:8888\n";});$http->on("request",function($request,$response)use($dispatcher){$response->header("X-Powered-By","Salamander");//获取方法和来自某处的URI$httpMethod=$request->server['request_method'];$uri=$request->server['request_uri'];//剥离查询字符串(?foo=bar)并解码URIif(false!==$pos=strpos($uri,'?')){$uri=substr($uri,0,$pos);}$uri=rawurldecode($uri);$res='';$routeInfo=$调度员->调度h($httpMethod,$uri);switch($routeInfo[0]){caseFastRoute\Dispatcher::NOT_FOUND://...404NotFound中断;caseFastRoute\Dispatcher::METHOD_NOT_ALLOWED:$allowedMethods=$routeInfo[1];//...405方法不允许中断;案例FastRoute\Dispatcher::FOUND:$handler=$routeInfo[1];$vars=$routeInfo[2];$parts=explode(':',$handler);$controller=new$parts[0];$方法=$部分[1];$res=call_user_func_array(array($controller,$method),[$vars]);休息;$response->end($res);});$http->start();注意$request->server中的request_method和request_uri都是小写键,这与PHP内置的写法不同。swoole文档测试包下载swoole-test