本文将以个人实例分享一下swoole框架结合tp5,希望能对大家有所帮助
一、个人案例
创建http.php
//创建HTTP对象 $http = new swoole_http_server("0.0.0.0", 8081); $http->set(① [ 'enable_static_handler' => true, 'document_root'=>"/data/wwwroot/superhiee/www/public/static", 'worker_num'=>5 /*设置启动的Worker进程数。 * (1) 业务代码是全异步非阻塞的,这里设置为CPU核数的1-4倍最合理 * (2) 业务代码为同步阻塞,需要根据请求响应时间和系统负载来调整,例如:100-500 * (3)默认设置为SWOOLE_CPU_NUM,最大不得超过SWOOLE_CPU_NUM * 1000 */ ] ); $http->on('WorkerStart',function (swoole_server $server, $worker_id){ //定义应用目录 define('APP_PATH', __DIR__ . '/../application/');② //加载框架里面的文件 require __DIR__ . '/../thinkphp/base.php'; }); $http->on('request', function($request, $response) { //把值赋值给$_SERVER,$_GET,$_POST 方便tp5快加执行 if(isset($request->server) { foreach ($request->server as $k=>$v) { $_SERVER[strtoupper($k)]=$v; } } if(isset($request->header)) { foreach ($request->header as $k=>$v) { $_SERVER[strtoupper($k)]=$v; } } if(isset($request->get)) { foreach ($request->get as $k=>$v) { $_GET[$k]=$v; } } if(isset($request->post)) { foreach ($request->post as $k=>$v) { $_POST[$k]=$v; } } 开启缓存 ob_start();③ try { // 执行应用并响应 think\App::run()->send(); }catch (\Exception $e) { echo $e->getMessage(); } //获取当前缓冲区内容 $res = ob_get_contents(); //清空(擦除)缓冲区并关闭输出缓冲 ob_end_clean(); $response->header('Content-Type', 'text/html; charset=utf8'); $response->end($res); }); $http->start();
①:Server->set:用于设置运行时的各项参数。服务器启动后通过$serv->setting来访问Server->set方法设置的参数数组。
函数原型
function Server->set(array $setting);
这里把enable_static_handler开启,用于静态文件请求处理功能。并配合了document_root配置静态文件根目录
②:这里把tp5中的定义应用目录放在request里面,同时把require DIR . ‘/…/thinkphp/base.php’ 也放在这里面。但不能把startp.php放在这里面,如果放在这里面就会直接==App::run()->send();==执行应用。
在导入 tp框架的时候有两种方式
(1)放在 WorkStart 中,
优点:只需要载入一次框架,速度快
缺点:由于 tp5对swoole 支持不好,所以需要更改一些 tp5 的源码
(2) 把 define 和 require直接在放在request的请求中
优点:不需要更改 tp5 的源码,但是在 task任务中无法通过命名空间加载类
缺点:速度稍微慢与 WorkStart
本例子用的是第一种方法
③:ob_start([string output_callback])- 打开输出缓冲区,所有的输出信息不在直接发送到浏览器,而是保存在输出缓冲区里面,可选得回调函数用于处理输出结果信息。
ob_start() 在服务器打开一个缓冲区来保存所有的输出。所以在任何时候使用echo ,输出都将被加入缓冲区中,直到程序运行结束或者使用ob_flush()来结束。然后在服务器中缓冲区的内容才会发送到浏览器,由浏览器来解析显示。
ob_get_contents() 获取缓冲区的内容
ob_flush() 冲刷出(送出)输出缓冲区中的内容
ob_clean() 清空输出缓冲区
ob_end_flush() 冲刷出(送出)输出缓冲区内容并关闭缓冲
ob_end_clean() 清空(擦除)缓冲区并关闭输出缓冲
flush() 刷新输出缓冲
以上就是“swoole框架结合tp5实例分享”详细内容,想要了解更多swoole教程或资讯欢迎关注编程学习网
扫码二维码 获取免费视频学习资料
- 本文固定链接: http://phpxs.com/post/8150/
- 转载请注明:转载必须在正文中标注并保留原文链接
- 扫码: 扫上方二维码获取免费视频资料