编程学习网 > PHP技术 > swoole > swoole框架结合tp5实例分享
2021
06-30

swoole框架结合tp5实例分享

本文将以个人实例分享一下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教程或资讯欢迎关注编程学习网

扫码二维码 获取免费视频学习资料

Python编程学习

查 看2022高级编程视频教程免费获取