参考官网分布说明 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 分布初试的更多相关文章

  1. 【JVM学习笔记一】JVM内存分布

    Overview 学习JVM首先需要了解一下JVM管理的内存是如何分布的,在看了<深入理解Java虚拟机>和一些博文之后,我准备自己记录一下学习的过程. 下图是JVM中运行时数据区的大致示 ...

  2. 初试weka数据挖掘

    初试weka数据挖掘 Posted on 2013-09-07 13:26 DM张朋飞 阅读(321) 评论(7) 编辑 收藏 偶然间在网上看到了一篇关于weka好的博文,就记录了下来…… weka下 ...

  3. Spark踩坑记——初试

    [TOC] Spark简介 整体认识 Apache Spark是一个围绕速度.易用性和复杂分析构建的大数据处理框架.最初在2009年由加州大学伯克利分校的AMPLab开发,并于2010年成为Apach ...

  4. 关于Repository、IUnitOfWork 在领域层和应用服务层之间的代码分布与实现

    本来早就准备总结一下关于Repository.IUnitOfWork之间的联系以及在各层中的分布,直到看到田园里的蟋蟀发表的文章:<DDD 领域驱动设计-谈谈 Repository.IUnitO ...

  5. 【T-SQL】分布抽取部分数据

    好吧,我确实不知道该怎么起这个标题,整了一个“分布”,感觉还有点高档,其实没啥技术含量,看完你就知道了.情况是这样,刚刚接到一个临时任务,需要让几个营业点的销售数据[变]少一点,就是在ERP的相关报表 ...

  6. Hadoop2.6.0安装—单机/伪分布

    目录 环境准备 创建hadoop用户 更新apt 配置SSH免密登陆 安装配置Java环境 安装Hadoop Hadoop单机/伪分布配置 单机Hadoop 伪分布Hadoop 启动Hadoop 停止 ...

  7. Fold Change和t分布

    基因表达谱数据 基因表达谱可以用一个矩阵来表示,每一行代表一个基因,每一列代表一个样本(如图1).所有基因的表达谱数据在“gene_exp.txt”文件中存储,第一列为基因的entrez geneid ...

  8. caffe初试(一)happynear的caffe-windows版本的配置及遇到的问题

    之前已经配置过一次caffe环境了: Caffe初试(一)win7_64bit+VS2013+Opencv2.4.10+CUDA6.5配置Caffe环境 但其中也提到,编译时,用到了cuda6.5,但 ...

  9. 特许金融分析师 (CFA) 持证人现在一般在做什么工作?职业分布是怎样的?

    特许金融分析师 (CFA) 持证人现在一般在做什么工作?职业分布是怎样的?  陈雨桐 1. 全球范围: 根据 CFA 协会 2014 年 6 月的报告: CFA Institute has over ...

随机推荐

  1. G - Supermarket

    A supermarket has a set Prod of products on sale. It earns a profit px for each product x∈Prod sold ...

  2. Web(一)

    Tomcat 服务器       B/S 浏览器/服务器       C/S 客户端/服务器  URI :大 广 /项目名                      URL: 小  http://lo ...

  3. 第39级台阶|2013年蓝桥杯B组题解析第三题-fishers

    第39级台阶 小明刚刚看完电影<第39级台阶>,离开电影院的时候,他数了数礼堂前的台阶数,恰好是39级! 站在台阶前,他突然又想着一个问题: 如果我每一步只能迈上1个或2个台阶.先迈左脚, ...

  4. 最全面的Android Studio使用教程【申明:来源于网络】

    最全面的Android Studio使用教程[申明:来源于网络] http://www.admin10000.com/document/5496.html

  5. VUE----整理

    -------------------------------------------------------------------VUE------------------------------ ...

  6. js事件绑定的几种方式

    在JavaScript中,有三种常用的绑定事件的方法: 在DOM元素中直接绑定: 在JavaScript代码中绑定: 绑定事件监听函数 一. 在DOM元素中直接绑定 这里的DOM元素,可以理解为HTM ...

  7. [No0000F9]C# 运算符重载

    您可以重定义或重载 C# 中内置的运算符.因此,程序员也可以使用用户自定义类型的运算符.重载运算符是具有特殊名称的函数,是通过关键字 operator 后跟运算符的符号来定义的.与其他函数一样,重载运 ...

  8. Vue 超快速学习

    Vue 超快速学习 基础知识: 1.vue的生命周期: beforeCreate/created. beforeMount/mounted. beforeUpdate/updated. beforeD ...

  9. iOS知识点持续更新。。。

    1.自动布局拉伸和压缩优先级 Autolayout中每个约束都有一个优先级,优先级的范围是1~1000.创建一个约束,默认的优先级最高是1000. Content Hugging Priority:该 ...

  10. 结构体地址 字符串地址 数组地址 辨析 字符char是整型 内存地址

    小结: 1.函数传参中,结构体不同数组,结构体是传值,指针和数组是传地址:2.随声明顺序,指针变量的内存地址从低到高,其他从高到低:3.char c[]字符数组,即数组的一种:char *c字符指针, ...