GatewayWorker 分布初试
参考官网分布说明 http://doc2.workerman.net/326144
准备:两台内网服务器A1,A2
A1服务器写PHP脚本前端访问
<?php
// 注意这里使用A2服务器的内网ip:port
// 如果本地则可以使用 0.0.0.0:port
// 外网服务器使用 外网ip:port
GatewayClient::$registerAddress = "172.16.100.24:6000";
// 发送数据
GatewayClient::sendToUid( "6201944211a7", "sdsadadas" );
A2服务器写入gateway脚本
start_businessworker.php
<?php
use \Workerman\Worker;
use \Workerman\WebServer;
use \GatewayWorker\Gateway;
use \GatewayWorker\BusinessWorker;
use \Workerman\Autoloader; // bussinessWorker 进程
$worker = new BusinessWorker();
// worker名称
$worker->name = 'HdwBusinessWorker';
// bussinessWorker进程数量
$worker->count = 4;
// 服务注册地址
// 分布式则参考官网文档
// 同台服务器则可以使用 127.0.0.1:port
// 内网服务器则可以使用 内网ip:port
// 外网服务器则可以使用 外网ip:port
$worker->registerAddress = '127.0.0.1:6000';
/**
* 设置处理业务的类为MyEvent。
* 如果类带有命名空间,则需要把命名空间加上,
* 类似$worker->eventHandler='\my\namespace\MyEvent';
*/
// $worker->eventHandler = 'MyEvent';
// 设置使用哪个类来处理业务,默认值是Events,即默认使用Events.php中的Events类来处理业务。业务类至少要实现onMessage静态方法,onConnect和onClose静态方法可以不用实现。 // 如果不是在根目录启动,则运行runAll方法
if(!defined('GLOBAL_START')) {
Worker::runAll();
}
start_gateway.php
<?php
use \Workerman\Worker;
use \Workerman\WebServer;
use \GatewayWorker\Gateway;
use \GatewayWorker\BusinessWorker;
use \Workerman\Autoloader; // gateway 进程,这里使用Text协议,可以用telnet测试
$gateway = new Gateway("Hardware://0.0.0.0:6049");
// gateway名称,status方便查看
$gateway->name = 'HdwGateway';
// gateway进程数
$gateway->count = 4;
// 本机ip,分布式部署时使用内网ip
// 这里ip必须为内网ip满足A1服务器调用
$gateway->lanIp = '172.16.100.24';
// 内部通讯起始端口,假如$gateway->count=4,起始端口为4000
// 则一般会使用4000 4001 4002 4003 4个端口作为内部通讯端口
$gateway->startPort = 6040;
// 服务注册地址
$gateway->registerAddress = '127.0.0.1:6000'; // 心跳间隔
$gateway->pingInterval = 30;
// $pingNotResponseLimit * $pingInterval 时间内,客户端未发送任何数据,断开客户端连接
$gateway->pingNotResponseLimit = 2;
// 心跳数据
// 技巧1:如果客户端有定时向服务端发送心跳检测,则服务端可以不必向客户端发送心跳检测,即利用客户端主动发送的数据判断客户端是否存活。这时我们需要设置pingData=''
$gateway->pingData = getPingData(); /*
// 当客户端连接上来时,设置连接的onWebSocketConnect,即在websocket握手时的回调
$gateway->onConnect = function($connection)
{
$connection->onWebSocketConnect = function($connection , $http_header)
{
// 可以在这里判断连接来源是否合法,不合法就关掉连接
// $_SERVER['HTTP_ORIGIN']标识来自哪个站点的页面发起的websocket链接
if($_SERVER['HTTP_ORIGIN'] != 'http://kedou.workerman.net')
{
$connection->close();
}
// onWebSocketConnect 里面$_GET $_SERVER是可用的
// var_dump($_GET, $_SERVER);
};
};
*/ // 如果不是在根目录启动,则运行runAll方法
if(!defined('GLOBAL_START')) {
Worker::runAll();
}
start_register.php
<?php
use \Workerman\Worker;
use \GatewayWorker\Register; // register 服务必须是text协议
$register = new Register('text://0.0.0.0:6000');
// 如果不是在根目录启动,则运行runAll方法
if(!defined('GLOBAL_START')) {
Worker::runAll();
}
服务器:
A1服务器无任何需要配置,
A2服务器①、Register服务监听的端口要可以被其它内网服务器访问(外网访问可以屏蔽);②、start_gateway.php中如果$gateway->startPort=2300; $gateway->count=4;,则2300 2301 2302 2303四个端口需要被设置成能被其它服务器访问,也就是起始端口$gateway->startPort到$gateway->startPort + $gateway->count - 1这 $gateway->count个端口要设置成能被其它内网服务器访问。
GatewayWorker 分布初试的更多相关文章
- 【JVM学习笔记一】JVM内存分布
Overview 学习JVM首先需要了解一下JVM管理的内存是如何分布的,在看了<深入理解Java虚拟机>和一些博文之后,我准备自己记录一下学习的过程. 下图是JVM中运行时数据区的大致示 ...
- 初试weka数据挖掘
初试weka数据挖掘 Posted on 2013-09-07 13:26 DM张朋飞 阅读(321) 评论(7) 编辑 收藏 偶然间在网上看到了一篇关于weka好的博文,就记录了下来…… weka下 ...
- Spark踩坑记——初试
[TOC] Spark简介 整体认识 Apache Spark是一个围绕速度.易用性和复杂分析构建的大数据处理框架.最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apach ...
- 关于Repository、IUnitOfWork 在领域层和应用服务层之间的代码分布与实现
本来早就准备总结一下关于Repository.IUnitOfWork之间的联系以及在各层中的分布,直到看到田园里的蟋蟀发表的文章:<DDD 领域驱动设计-谈谈 Repository.IUnitO ...
- 【T-SQL】分布抽取部分数据
好吧,我确实不知道该怎么起这个标题,整了一个“分布”,感觉还有点高档,其实没啥技术含量,看完你就知道了.情况是这样,刚刚接到一个临时任务,需要让几个营业点的销售数据[变]少一点,就是在ERP的相关报表 ...
- Hadoop2.6.0安装—单机/伪分布
目录 环境准备 创建hadoop用户 更新apt 配置SSH免密登陆 安装配置Java环境 安装Hadoop Hadoop单机/伪分布配置 单机Hadoop 伪分布Hadoop 启动Hadoop 停止 ...
- Fold Change和t分布
基因表达谱数据 基因表达谱可以用一个矩阵来表示,每一行代表一个基因,每一列代表一个样本(如图1).所有基因的表达谱数据在“gene_exp.txt”文件中存储,第一列为基因的entrez geneid ...
- caffe初试(一)happynear的caffe-windows版本的配置及遇到的问题
之前已经配置过一次caffe环境了: Caffe初试(一)win7_64bit+VS2013+Opencv2.4.10+CUDA6.5配置Caffe环境 但其中也提到,编译时,用到了cuda6.5,但 ...
- 特许金融分析师 (CFA) 持证人现在一般在做什么工作?职业分布是怎样的?
特许金融分析师 (CFA) 持证人现在一般在做什么工作?职业分布是怎样的? 陈雨桐 1. 全球范围: 根据 CFA 协会 2014 年 6 月的报告: CFA Institute has over ...
随机推荐
- 我的第一篇paper
找实习虽然只为自己争取到一个秋季的绿色通道,但可喜的是,我投的几篇paper,终于中了一篇. 现在可以在英文数据库或google scholar上面搜索到自己名字,感觉很nice,研究生的心愿算是完成 ...
- JS控制只能输入数字并且最多允许小数点两位
直接上代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- Pro ASP.NET MVC –第三章 MVC模式
在第七章,我们将创建一个更复杂的ASP.NET MVC示例,但在那之前,我们会深入ASP.NET MVC框架的细节:我们希望你能熟悉MVC设计模式,并且考虑为什么这样设计.在本章,我们将讨论下列内容 ...
- 关于ie6出现的问题的原因归结
关于ie6出现的问题主要可以归结为以下几种情况把. 当然还存在各种原因,bug的情况也还有各种各样,我只是小结一下我自己经常遇到,比较有代表性的问题.会持续的更新. 1.浏览器本身存在的缺陷 比如: ...
- 6.26 py GIL
在python中,多进程效率远大于多线程效率 python中存在GIL这个"线程锁", 关键地方可以使用c语言解决 GIL问题 然后可以提高cpu占用效率 异步的实现!!! 同 ...
- ajax 获取服务器返回的XML字符串
前台 解析失败不会抛出任何异常, 只会返回一个给定的错误文档 let l = console.log let http = ajanuw.create({ uri: 'http://localhost ...
- 火狐浏览器报错“support.mozilla.org
火狐浏览器有时候再打开新网页会报此错“support.mozilla.org 有时候火狐浏览器会出现如下状况 解决方法 在地址栏键入”about:config” 点击“我了解此风险” 在下方任意位置右 ...
- Centos7下使用mail发送邮件配置
参考文档:https://blog.csdn.net/lyf844692713/article/details/81479066 安装环境查看 查看服务是否安装 rpm -qa|grep mail 如 ...
- Warning: Failed to halt at after bootloader, forced stop at
该错误证实是因为 cc2650 SW下载模式,芯片复位引脚未接出来导致,芯片复位必须和下载器保持良好连接
- [No0000111]java9环境变量配置bat
保存成bat(utf-8 无签名 编码) 右键以管理员权限运行 修改JAVAINSTALLPATH 为JAVA SDK 安装目录(默认用C:\PROGRAM FILES\JAVA\)即可: 只在 用户 ...