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

腾云网络 八年经验专注网站建设
  • 首页
  • 服务项目
    • 网站建设
    • 微信小程序
    • 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

上一篇

返回栏目

下一篇

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

热推

  • PHP+MYSQL优化总结让您的网站如飞一般加速
  • php框架是什么意思框架和设计模式的区别有很多往往把框架模式混淆php用框架和不用框架
  • php开源博客大全 PHP7的核心开发者,请小伙伴们看他的微博php 博客 开源框架
  • 要学习以下方面必备知识电工原理和电机原理一定要懂
  • php订单管理系统 开源沈金堤:滴滴在数据库层面的实践(上)免费开源php cms系统
  • 主流编程语言,大家可以跟据自己的目标进行选择!!
  • 有了php源码后怎么编程PHP的一些优点:源码窝也算是个PHP真爱粉八字源码算命源码php
  • php注册登录代码在调试中遇到的问题之一——需要验证登录的代码调试php实现mvc的登录注册
  • php开源广告管理系统编者注:谷歌插件是用来向谷歌添加或修改功能的浏览器扩展程序php api文档管理 开源
  • php开发从入门到精通为什么程序员都喜欢黑php?这个嘛!(组图)php开发从入门到精通pdf下载

相关

标签

seo(1191) 市场营销(661) 网站制作(573) 网站建设(567) 搜索引擎(553) 网站(482) PHP(363) 编程语言(346) 建站(294) 关键词排名优化(267) 网站建设公司(245) 优化(216) seo排名(207) 域名(190) 软件(171) 网站优化(150) 搜索引擎优化(150) 外链(141) 科技(136) 网站关键词(124) 网站排名优化(123) 域名服务器(120) 网站排名(109) 时政(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 2023 请输入关健词 货源 货货源 虚拟
  • 客服

    在线客服

  • 电话

    13160355545

  • 微信

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