宿迁腾云网络网站建设公司

腾云网络 八年经验专注网站建设
  • 首页
  • 服务项目
    • 网站建设
    • 微信小程序
    • APP开发
    • SEO优化
  • 建站费用
  • 成功案例
    • 网站建设案例
    • 小程序案例
    • APP开发案例
    • SEO优化案例
  • 行业动态
    • 网站建设
    • SEO优化
    • 技术日志
  • 联系我们
    • 关于我们
首页 > 行业动态 > 技术日志 > php-fpm应用与php-swoole应用进行通信

php-fpm应用与php-swoole应用进行通信

2020-04-26

基础要求

  • linux万物皆文件

  • socket通信

  • 基础进制转换

写在前面

这篇文章是自己练习的内容,主要想实现应用间的通信机制。

Workerman中提供的建议方案

与其它mvc框架结合建议以上图的方式(ThinkPHP为例):

1、ThinkPHP与Workerman是两个独立的系统,独立部署(可部署在不同服务器),互不干扰。

2、ThinkPHP以HTTP协议提供网页页面在浏览器渲染展示。

3、ThinkPHP提供的页面的js发起websocket连接,连接workerman

4、连接后给Workerman发送一个数据包(包含用户名密码或者某种token串)用于验证websocket连接属于哪个用户。

5、仅在ThinkPHP需要向浏览器推送数据时,才调用workerman的socket接口推送数据。

6、其余请求还是按照原本ThinkPHP的HTTP方式调用处理。

总结:

把Workerman作为一个可以向浏览器推送的通道,仅仅在需要向浏览器推送数据时才调用Workerman接口完成推送。业务逻辑全部在ThinkPHP中完成。

我们使用swoole环境的常驻内存、协程特性来做一些其他事务,如:任务队列及其消费、缓存、异步执行等情况时

可以如建议中第5步所说,FPM环境调用Swoole环境提供的接口(可以用TCP/HTTP等方式)来开始一个任务

进程通信

上面的方案可以用在单机中,也可以用在集群部署中。

进程通信一般仅限于单机中使用

进程通信的方式有好几种,这里主要写明我测试的一种。

unix socket 文件

在linux环境中,万物皆为文件,套接字也可以用文件来表示,然后一个进程(一般是swoole环境)监听它,其他进程(FPM环境)连接它,并且发送数据

这里使用的是Easyswoole框架提供的一个基类,如果是纯Swoole环境可以下载框架源码并查看原理

EasySwoole部分

继承了 AbstractUnixProcess ,封装好了很多内容,直接写明onAccept 接受数据做处理即可

 \;

 \\\\;
 \\;

   
{

     (Socket $socket)
    {
        
        $header = $socket->recvAll(, );

         (strlen($header) != ) {
            $socket->sendAll(::pack(json_encode([
                 => ,
                 => ,
            ], )));
            $socket->close();
            ;
        }

        
        
        $allLength = ::packDataLength($header);
        $data = $socket->recvAll($allLength, );
         (strlen($data) == $allLength) {
             $data;

            

            $socket->sendAll(::pack(json_encode([
                 => ,
                 => ,
            ], )));
            $socket->close();
        }{

            $socket->sendAll(::pack(json_encode([
                 => ,
                 => ,
            ], )));
            $socket->close();
        }
    }

      ($string)
    {
         pack(, strlen($string)) . $string;
    }

      ($head)
    {
         unpack(, $head)[];
    }
}

写好了任务逻辑,还需要加入启动该进程

EasySwooleEvent.php文件
       (EventRegister $register)
    {
        $config =  UnixProcessConfig();
        $config->setSocketFile(EASYSWOOLE_ROOT.);
        $config->setProcessName();

        $siam =  Siam($config);
        ServerManager::getInstance()->getSwooleServer()->addProcess($siam->getProcess());
    }

普通环境发送数据

$sock = dirname().;

$unixSock = stream_socket_client(.$sock);

fwrite($unixSock, siam_pack());



fclose($unixSock);




 ($string)
{
     pack(, strlen($string)) . $string;
}

 ($head)
{
     unpack(, $head)[];
}


Tag:
网站制作公众号

宿迁腾云网络网站建设公司 | 网站开发 | 网站制作 | 网站优化

咨询电话:13160355545

上一篇

返回栏目

下一篇

免责声明:本站所有文章和图片均来自用户分享和网络收集,文章和图片版权归原作者及原出处所有,仅供学习与参考,请勿用于商业用途,如果损害了您的权利,请联系网站客服处理。

热推

  • http协议接口简单概括接口相对复杂的一个接口示例
  • 谷歌OS欢迎页面隐含了哪些新线索?(图)
  • 网站后台管理系统php安装扩展下多线程扩展的安装步骤查看(组图)php网站后台访问统计分析
  • php购物车结算代码自助结算购物车研发商超嗨智能宣布完成数千万元A轮融资java购物结算系统
  • php 开源轻博客系统 腾讯开源:从内部开源到开源社区一员大将的跨越(图)php 开源轻博客系统
  • php 代码格式化工具KentBeck如何安装VSCode扩展?注意这些问题你可以探索更多php 代码格式化工具
  • 适合中小型项目开发的国产PHPView应用程序控制器
  • 看看该服务器是怎样启动PHP,并运行PHP中的方法
  • 腾云网络 PHP数组 并集 交集 差集
  • 本文实例讲述了PHP保存到服务器的方法(图)

相关

标签

seo(1192) 市场营销(661) 网站制作(574) 网站建设(568) 搜索引擎(553) 网站(482) PHP(363) 编程语言(346) 建站(294) 关键词排名优化(267) 网站建设公司(245) 优化(216) seo排名(207) 域名(190) 软件(171) 网站优化(150) 搜索引擎优化(150) 外链(141) 科技(136) 网站关键词(124) 网站排名优化(123) 域名服务器(120) 网站排名(111) 时政(103) 排名优化(95) 搜索引擎收录(93) 网站设计(93) 电子商务(88) 引擎(86) 移动互联网(85) 开发框架(79) 开发(75) 网站服务器(74) 框架(68) 前端开发(68) 网站建设方案(66) 网站分析(66) 关键(64) 流量(63) 源码(62) 百度优化(62) 网站权重(61) 开放源代码(59) seo培训(53) php框架(51) 网页设计(51) 百度(51) 网站建设知识(50) 谷歌(50) 网站结构(50)
宿迁腾云网络网站建设公司
网站建设
  • 私人定制
  • 标准模板建站
  • 经济模板建站
精品模板

宿迁腾云网络网站建设公司

联系电话:13160355545

公司地址:江苏省宿迁市丽景湾华庭北门都市花园公寓9楼907

联系邮箱:admin@tyweb.net

全国分站
  • 北京
  • 广东
  • 东莞 广州 中山 深圳 惠州 江门 珠海 汕头 佛山 湛江 河源 肇庆 潮州 清远 韶关 揭阳 阳江 云浮 茂名 梅州 汕尾
  • 山东
  • 济南 青岛 临沂 济宁 菏泽 烟台 泰安 淄博 潍坊 日照 威海 滨州 东营 聊城 德州 莱芜 枣庄
  • 江苏
  • 苏州 徐州 盐城 无锡 南京 南通 连云港 常州 扬州 镇江 淮安 泰州 宿迁
  • 河南
  • 郑州 南阳 新乡 安阳 洛阳 信阳 平顶山 周口 商丘 开封 焦作 驻马店 濮阳 三门峡 漯河 许昌 鹤壁 济源
  • 上海
  • 河北
  • 石家庄 唐山 保定 邯郸 邢台 沧州 秦皇岛 张家口 衡水 廊坊 承德
  • 浙江
  • 温州 宁波 杭州 台州 嘉兴 金华 湖州 绍兴 舟山 丽水 衢州
  • 陕西
  • 西安 咸阳 宝鸡 汉中 渭南 安康 榆林 商洛 延安 铜川
  • 湖南
  • 长沙 邵阳 常德 衡阳 株洲 湘潭 永州 岳阳 怀化 郴州 娄底 益阳 张家界 湘西
  • 重庆
  • 福建
  • 漳州 泉州 厦门 福州 莆田 宁德 三明 南平 龙岩
  • 天津
  • 云南
  • 昆明 红河 大理 文山 德宏 曲靖 昭通 楚雄 保山 玉溪 丽江 临沧 思茅 西双版纳 怒江 迪庆
  • 四川
  • 成都 绵阳 广元 达州 南充 德阳 广安 阿坝 巴中 遂宁 内江 凉山 攀枝花 乐山 自贡 泸州 雅安 宜宾 资阳 眉山 甘孜
  • 广西
  • 贵港 玉林 北海 南宁 柳州 桂林 梧州 钦州 来宾 河池 百色 贺州 崇左 防城港
  • 安徽
  • 芜湖 合肥 六安 宿州 阜阳 安庆 马鞍山 蚌埠 淮北 淮南 宣城 黄山 铜陵 亳州 池州 巢湖 滁州
  • 海南
  • 三亚 海口 琼海 文昌 东方
  • 江西
  • 南昌 赣州 上饶 吉安 九江 新余 抚州 宜春 景德镇 萍乡 鹰潭
  • 湖北
  • 武汉 宜昌 襄樊 荆州 恩施 孝感 黄冈 十堰 咸宁 黄石 仙桃 随州 天门 荆门 潜江 鄂州 神农架
  • 山西
  • 太原 大同 运城 长治 晋城 忻州 临汾 吕梁 晋中 阳泉 朔州
  • 辽宁
  • 大连 沈阳 丹东 辽阳 葫芦岛 锦州 朝阳 营口 鞍山 抚顺 阜新 本溪 盘锦 铁岭
  • 黑龙江
  • 齐齐哈尔 哈尔滨 大庆 佳木斯 双鸭山 牡丹江 鸡西 黑河 绥化 鹤岗 伊春 大兴安岭 七台河
  • 内蒙古
  • 赤峰 包头 通辽 呼和浩特 乌海 鄂尔多斯 呼伦贝尔
  • 贵州
  • 贵阳 黔东 黔南 遵义 黔西 毕节 铜仁 安顺 六盘水
  • 甘肃
  • 兰州 天水 庆阳 武威 酒泉 张掖 陇南 白银 定西 平凉 嘉峪关 临夏 金昌 甘南
  • 青海
  • 西宁 海西 海东 海北 果洛 玉树 黄南
  • 新疆
  • 乌鲁木齐 伊犁 昌吉 石河子 哈密
  • 西藏
  • 拉萨 山南 林芝 日喀则
  • 吉林
  • 长春 白山 白城 延边 松原 辽源 通化 四平
  • 宁夏
  • 银川 吴忠 中卫 石嘴山 固原
SiteMap
网站地图
TAG标签
Copyright © 2017-2025 TYWEB.NET 宿迁腾云网络科技有限公司 ALL RIGHTS RESERVED.   苏ICP备17033535号-1

热门搜索

下载 2025 2026 2024 2027 zh-home-jiuyougaming ch-game-9yougaming.c chcn-leyu.com zhcn-world-leyu.com home-lysports.com world-lysports.com zh-global-lysports.c zhcn-app-lysports.co cn-app-lysports.com zhcn-intl-leyusports ch-app-leyu.com zhcn-lysports.com leyuwap.com zhcn-home-leyusports cn-intl-leyusports.c
  • 客服

    在线客服

  • 电话

    13160355545

  • 微信

精品模板
建站费用
成功案例
联系我们