公司开发用到WorkerMan框架,开发RPC服务,用于拉取用户信息和协助用户注册。

workman 官网:http://www.workerman.net/workerman

老版本:

workerman : 3.1.
GatewayWorker : 1.0.x 查看GatewayWorker版本:http://www.workerman.net/gatewaydoc/faq/get-gateway-version.html

近来,错误日志 workerman.log 中频繁报错:

-- :: createGlobalClientId fail GatewayWorker\Lib\StoreDriver\Redis :
-- :: storeClientAddress fail.
-- :: createGlobalClientId fail GatewayWorker\Lib\StoreDriver\Redis :
-- :: storeClientAddress fail.

根据workerman 框架开发者李亮 的说法,更新GatewayWorker 版本能解决这问题。

老版本文件的目录结构:

service/

├── Applications (目录)
│   └── CHWRPC(目录)
│     ├── Event.php
│     ├── start_businessworker.php
│     └── start_gateway.php
├── GatewayWorker (目录)
├── start.php
├── Workerman (目录)
└── workerman.log

更新GatewayWorker 版本:

升级前准备:

1、备份整个service 目录文件

2、查看官方文档,升级的提醒:http://www.workerman.net/gatewaydoc/appendices/upgrade.html

3、下载并解压源码包:

  1)下载页面:http://www.workerman.net/download,下载 GatewayWorker 的 zip压缩文件

  2)解压:unzip GatewayWorker-master.zip

  3)源码包文件的基本目录结构如下:

  GatewayWorker-master/

  ├── Applications (目录)
  │   └── YourApp (目录)
  │      ├── Events.php
  │      ├── start_businessworker.php
  │      ├── start_gateway.php
  │      └── start_register.php
  ├── GatewayWorker (目录)
  ├── start.php
  ├── Workerman (目录)
  └── workerman.log

升级步骤:

1、停止服务: php start.php stop

2、需要同时将GatewayWorker 和 Workerman 版本更新,不然会报错。将GatewayWorker-master目录中的GatewayWorker 和 Workerman 目录文件,覆盖到 service 目录中

3、

修改文件名,将service/Applications/CHWRPC/Event.php 改名为 Events.php

修改类名, 修改 Events.php 中 class Event 为 class Events

4、拷贝GatewayWorker-master/Applications/YourApp/start_register.php 到 service/Applications/CHWRPC/ 中

<?php
/**
* This file is part of workerman.
*
* Licensed under The MIT License
* For full copyright and license information, please see the MIT-LICENSE.txt
* Redistributions of files must retain the above copyright notice.
*
* @author walkor<walkor@workerman.net>
* @copyright walkor<walkor@workerman.net>
* @link http://www.workerman.net/
* @license http://www.opensource.org/licenses/mit-license.php MIT License
*/
use \Workerman\Worker;
use \GatewayWorker\Register; // 自动加载类
require_once __DIR__ . '/../../Workerman/Autoloader.php'; // register 服务必须是text协议
$register = new Register('text://0.0.0.0:1236'); // 如果不是在根目录启动,则运行runAll方法
if(!defined('GLOBAL_START')) {
Worker::runAll();
}

5、新增一行内容到service/Applications/CHWRPC/start_gateway.php

# echo "$gateway->registerAddress = '127.0.0.1:1236';" >> start_gateway.php
## 服务注册地址
## 单机部署ip为127.0.0.1
## 端口与start_register.php中监听端口一致

6、新增一行内容到service/Applications/CHWRPC/start_businessworker.php

# echo "$worker->registerAddress = '127.0.0.1:1236';" >> start_businessworker.php
注意:端口要和start_register.php中监听端口一致。

7、如果业务有依赖client_id类型,需要将client_id由原来整型改为字符串

8、重启服务,进入debug模式:php start.php start

9、如果没有报错,则将服务放到后台运行:php start.php start -d

新版本:

workerman : 3.3.4
GatewayWorker : 2.0.7

调试模式下,遇到的几个问题:

1、

警告信息:

Deprecated: Lib\MongoDB::_connect(): The Mongo class is deprecated, please use the MongoClient class in /home/service/Applications/CHWRpc/Lib/MongoDB.php on line 

分析:

MongoDB.php的第1859行:

$this->_connection = new \Mongo($this->_connection_string, $options);

_connect() 方法里初始化连接时,用到的 Mongo 类已经被废弃了,建议使用 MongoClient 类。

解决:

将_connection() 方法中用到的 Mongo 类改为 MongoClient 类,即:

$this->_connection = new \MongoClient($this->_connection_string, $options);

2、

警告信息:

Strict Standards: Non-static method Modules\NickName::boy_1() should not be called statically in /home/service/Applications/CHWRpc/Modules/NickName.php on line 

分析:

boy_1() 的声明是一个普通方法,而调用时却采用静态方法调用,因此出现警告信息。

解决方法:

boy_1() 方法的声明修改为: static function boy_1(){ ... }

GatewayWorker 版本升级过程和注意点的更多相关文章

  1. 22 Zabbix系统版本升级过程

    点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 22 Zabbix系统版本升级过程 Zabbix升级与其他相类似系统升级一样,前提一定做好备份,备 ...

  2. MQTT版本升级过程及源码解析

    MQTT版本升级过程及源码解析 首先说一下为什么要写这篇文章呢,在我发现网上对MQTT的文章介绍实在太少了,可能也是使用这个的频率比较低吧!还有对问题的定位以及解决的方式和办法也太少了,所以特意写这篇 ...

  3. 记一次 React Native 大版本升级过程——从0.40到0.59

    去年把公司几个react native 相关的项目升级了下,已经过去一段时间了,这里系统整理下之前的整个过程. 背景 之前到公司的时候发现公司用的还是0.40的版本,据了解,当时项目做的比较早,导航用 ...

  4. 虹软人脸识别—版本升级接口修改说明(C#)

    自虹软发布了免费.离线版本人脸识别SDK,在Github上陆续分享了各个版本对应的 C# Demo.因为公司项目一直在使用虹软的SDK,因此每当虹软官网有新版本发布,我都会进行了解,并结合Demo进行 ...

  5. IOS零碎技术整理(3)-获取wifi列表

    1.   该功能实现基于MobileApple80211框架来进行开发,而目前该框架成为了私有框架,其中的API均为私有API. 如果使用这些API可能导致应用不能上app store或者ios版本升 ...

  6. 注解的基本盘点 -- 《Java编程思想》

    注解(元数据)为我们在代码中添加信息提供了一种形式化的方法,使我们可以在之后的某一个时刻非常方便地使用这些数据. ---<Java编程思想> 其实注解可以理解为一个工具类,只要使用了这个工 ...

  7. Javascript触屏手势库-JTouch(更新V1.1)

    作者:痞子|时间:2013-05-21|分类目录:js,javascript,jquery教程|Tag标签: javascript.jTouch|阅读(857) 7 条评论 Javascript触屏手 ...

  8. [置顶] API相关工作过往的总结之整体介绍

    此系列的总结文章,仅仅是我个人工作总结,有考虑不周之处还请各位同行多多指教. API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是 ...

  9. Promise实现小球的运动

        Promise简要说明 Promise可以处理一些异步操作:如像setTimeout.ajax处理异步操作是一函数回调的方式;当然ajax在jQuery版本升级过程中,编写方式也有所变动. P ...

随机推荐

  1. CorelDRAW X6最新注册激活机制

    最近购买CorelDRAW X6的小伙伴可能对如何注册激活软件存在疑惑,下面小编一步步教您如何快速激活CorelDRAW X6. CorelDRAW X6最新注册机制如下: 1.关注“Corel服务中 ...

  2. Java web课程学习之JSP

    JSP     jsp隐式对象:JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明.JSP隐式对象也被称为预定义变量. jsp脚本片段 l jsp脚本片段是指 ...

  3. freeswitch mod_xml_curl

    (猜想)调用htttp 进行动态用户注册 流程 用户通过客户端进行注册 填写sip账号密码 进入fs, fs发送http请求配置得地址,request中带着user,key 一些参数, 服务器返回xm ...

  4. linux rar 解压忽略带密码压缩包

    #解压忽略密码 rar x -p- file.rar #解压忽略子目录 rar x -ep file.rar

  5. s5k4ba摄像头驱动分析

    注释: 本驱动是基于S5PV310的,但是全天下的摄像头驱动都是采用V4L2,因此驱动框架流程基本差不多.其中fimc_init_camera()函数会回调.init函数,该函数主要就是通过IIC总线 ...

  6. AsyncTask 简要介绍

    当Android的UI线程超过5s未响应时,系统会引发ANR(Application Not Responding)异常,所以一般不在UI线程中执行耗时任务.一般是在其他线程中处理耗时任务,然后及时更 ...

  7. 【hdu 6319】Ascending Rating

    [链接] 我是链接,点我呀:) [题意] 给你一个长为n的数组a 让你对于每个长度为m的窗口. 算出其中的最大值以及从左往右遍历的时候这个最大值更新的次数. [题解] 单调队列. 从后往前滑动窗口. ...

  8. Java程序命令行打包Jar

    最近要跑爬虫程序,需要打包成jar发在linux服务器中运行.主要是第三方的lib包与配置文件,不进行打包,方便修改. 1.eclipse中src中源码编译后生成的源码在bin文件中,把里面源码单独拿 ...

  9. hdu Swipe Bo(bfs+状态压缩)错了多次的题

    Swipe Bo Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total S ...

  10. 5种语言混合编程:C++、JS、python、Lisp、汇编

    /* 混合C++.JS.python.Lisp.汇编 1种语言,5种语法 */ main { //C++ vector<int> v; v.push(2); putsl(v.size()) ...