1. 该方法仅作一种思路参考,实际应用也许会破坏thinkphp5.1的路由功能,并带来诸多问题,请读者尽量按照tp5.1官方的技术整合手段进行,按照tp5.1官方用户手
    册的方法可以实现swoole 风格的websocke协议,亲测可行

  1. <?php
  2. use think\Container;
  3. $myserver = new swoole_http_server('127.0.0.1',);
  4. $myserver->on('WorkerStart',function(swoole_server $server,$work_id)
  5. {
  6. define('APP_PATH', __DIR__ . '/../application/');
  7. require __DIR__ . '/../thinkphp/base.php';
  8. //Container::get('app')->run()->send();
  9. });
  10. $myserver->on('request',function($request,$response) use($myserver){
      #没错,swoole采用了大量匿名函数风格,use用来向匿名函数传递局部变量,因为我们要在函数体里执行
      #$mysever->close()来达到访问不同URL来刷新每次响应结果的目的,如果我们不这样做,无论访问什么URL,返回的效果都是一样的
  11. print_r($request->server);
       #由于swoole对常见的全局变量诸如 $_GET,$_POST,$_SERVER等做了封装,我们最好解析他们,并加入全局数组
  12. if (isset($request->server))
  13. {
  14. foreach($request->server as $k=>$v)
  15. {
  16. $_SERVER[strtolower($k)] = $v;
  17. }
  18. }
  19. if (isset($request->header))
  20. {
  21. foreach($request->header as $k=>$v)
  22. {
  23. $_REQUEST[strtolower($k)] =$v;
  24. }
  25. }
  26. if (isset($request->get))
  27. {
  28. foreach($request->get as $k=>$v)
  29. {
  30. $_GET[strtolower($k)] =$v;
  31. }
  32. }
  33. if (isset($request->post))
  34. {
  35. foreach($request->post as $k=>$v)
  36. {
  37. $_POST[strtolower($k)] =$v;
  38. }
  39. }
  40. ob_start();
  41. think\Container::get('app')->run()->send();#参见thinkphp5.1 /你的项目目录/public/index.php
    #为了保证网站运行我们要在请求到来时,装载所有应用模块,以便满足各种调用
  42. echo "--action--".request()->action().PHP_EOL;#request()->action()完全是thinkphp5.1内置方法
  43. $response->header('content-type','text/html; charset=UTF-8');
  44. $res = ob_get_contents();#获取缓存数据
  45. ob_end_clean();
  46. $response->end($res);
  47. $myserver->close();
  48. //$response->end("冲!");
  49. });
  50. $myserver->start();

注意:

thinkphp5.1整合swoole的更多相关文章

  1. laravel 整合 swoole ,并简单 ab 测试对比性能以及在 PHPstorm 中利用debug调试配置swoole服务中的PHP代码

    安装PHP 的 swoole 扩展 及 安装 laravel,就不描述了 整合 laravel 和 swoole 用了这个轮子,侵入性很小,一行代码搞定,推荐一下,今天刚用,不能预测未来是否会遇见坑 ...

  2. thinkphp整合swoole

    cli模式下执行thinkphp1.cd 项目根目录2.php index.php admin/index/index --执行 模块/控制器/方法名 异步消息队列1.服务器端核心代码 /** * 脚 ...

  3. Thinkphp5.0整合个推例子

    最近做一个后台发送消息推送到app(android和ios)的功能,该功能采用的是个推接口,基于php的,我用TP5来实现这个推送流程.先看官方demo吧.可以先参考官方给到的例子来看http://d ...

  4. Laravel配置nginx环境

    前言: 之前坑的!一直在尝试配置,但都失败了,只能用着apache,但是最近想整合swoole到laravel,无奈当前测试服务器是nginx,我只能再尝试在nginx上搭laravel环境 方法如下 ...

  5. Thinkphp5整合微信扫码支付开发实例

    ThinkPHP框架是比较多人用的,曾经做过的一个Thinkphp5整合微信扫码支付开发实例,分享出来大家一起学习 打开首页生成订单,并显示支付二维码 public function index() ...

  6. 当 Swoole 遇上 ThinkPHP5 世界你好

    本文假设你已经有了 Linux 操作系统的 PHP 环境,强烈推荐使用 Vagrant 来搭建开发环境 安装 Swoole PECL 拓展 可以通过 pecl 命令或者通过源码包编译安装,本文采用 p ...

  7. Swoole 整合成一个小框架

    目录 概述 效果 代码 小结 概述 这是关于 Swoole 学习的第六篇文章:Swoole 整合成一个小框架. 第五篇:Swoole 多协议 多端口 的应用 第四篇:Swoole HTTP 的应用 第 ...

  8. PHP 当Swoole 遇上 ThinkPHP5

    本文假设你已经有了 Linux 操作系统的 PHP 环境,强烈推荐使用 Vagrant 来搭建开发环境 安装 Swoole PECL 拓展可以通过 pecl 命令或者通过源码包编译安装,本文采用 pe ...

  9. ThinkPHP5框架缺陷导致远程命令执行(POC整合帖)

    摘要 近日thinkphp团队发布了版本更新https://blog.thinkphp.cn/869075 ,其中修复了一处getshell漏洞. 影响范围 5.x < 5.1.31<= ...

随机推荐

  1. [学习笔记] Hibernate 4.3.5 下载与安装

    下载 http://hibernate.org/orm/releases/4.3/ https://sourceforge.net/projects/hibernate/files/hibernate ...

  2. Python初始

    一,Python介绍 1.Python简介 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆(中文名字:龟叔)为了在阿姆斯特丹打发时间, ...

  3. UWP笔记-边框背景虚化效果

    这是一个简单的UI外观 1.添加Negut包: Microsoft.Toolkit.Uwp.UI.Controls 2.xaml:命名空间中引用 xmlns:controls="using: ...

  4. Java编程思想(三)控制程序流程

    3.1.10逗号运算符 我们可以使用一系列由逗号分隔的语句,而且哪些语句均会独立执行. 3.1.15复习计算顺序

  5. SQL SERVER MONTH函数

    定义: MONTH函数返回指定日期的月的部分 语法: MONTH(date) 参数: ①date参数是合法的日期表达式. 返回值: int型数据 例:  声明:本文是本人查阅网上及书籍等各种资料,再加 ...

  6. TypeScript 解构

    ⒈解构数组 最简单的解构莫过于数组的解构赋值了: let input = [1, 2]; let [first, second] = input; console.log(first); // out ...

  7. 阿里巴巴矢量图标库(iconfont)批量全选的方法

    阿里巴巴矢量图标库: https://www.iconfont.cn/ 浏览器打开调试面板,进入 console 调试面板(Google浏览器快捷键F12)或者在页面空白处,点击右键->审查元素 ...

  8. ORC相关的库介绍和应用

    将图像翻译成文字一般被称为光学文字识别(Optical Character Recognition,OCR) OCR库:Pillow.Tesseract.NumPy Pillow Pillow可以对图 ...

  9. 用shell脚本安装MySQL-5.7.22-Percona版本

    #!/bin/bash MySQL_Package=Percona-Server-5.7.22-22-Linux.x86_64.ssl101.tar.gz Package_Source=Percona ...

  10. Js 判断数组中是否包含某个值

    includes() 方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false. JavaScript Array includes() 方法