swoole reload 代码热更新 example

server:class Server{    private $_serv = null;

    private $_e = null;

    public function __construct()    {        $this->_serv = new swoole_server("0.0.0.0", 9501);        $this->_serv->set(array(            ‘worker_num‘ => 8,            ‘daemonize‘ => false,            ‘max_request‘ => 10000,            ‘dispatch_mode‘ => 2,            ‘debug_mode‘=> 1,        ));

        $this->_serv->on(‘Start‘, array($this, ‘onStart‘));        $this->_serv->on(‘WorkerStart‘, array($this, ‘onWorkerStart‘));        $this->_serv->on(‘Connect‘, array($this, ‘onConnect‘));        $this->_serv->on(‘Receive‘, array($this, ‘onReceive‘));        $this->_serv->on(‘Close‘, array($this, ‘onClose‘));        $this->_serv->start();    }

    public function onStart($serv)    {        echo "start\n";        cli_set_process_title(‘reload_master‘);    }

    public function onWorkerStart($serv, $worker_id)    {

        spl_autoload_register(function($class){

            $classPath = str_replace(‘\\‘, ‘/‘, $class) .‘.php‘;            if (file_exists($classPath)) {                include $classPath;            }

        });

        $this->_e = new \plugin\Event();

    }

    public function onConnect( $serv, $fd, $from_id ) {        echo "Client {$fd} connect\n";

    }    public function onReceive( swoole_server $serv, $fd, $from_id, $data ) {        $serv->reload();//当接收到客户端消息时更新代码,下次再执行work代码时变(onWorkerStart),本次执行还是不变        $this->_e->say();        echo "Get Message From Client {$fd}:{$data}\n";    }    public function onClose( $serv, $fd, $from_id ) {        echo "Client {$fd} close connection\n";    }

}

new Server();

client:

$cli = new Swoole_client(SWOOLE_SOCK_TCP);

$cli->connect(‘127.0.0.1‘, 9501, 1);

fwrite(STDOUT, ‘输入消息:‘);$msg = trim(fgets(STDIN));

$cli->send($msg);

时间: 2024-08-05 02:34:41

swoole reload 代码热更新 example的相关文章

热更新有多重要?游戏代码热更新杂谈

热更新的内容可以是美术资源,可以是代码,但相对来说,美术资源的更新不会受到约束,代码实际上是重灾区,本文介绍的主要是代码热更新. 热更新对于开发者来说是一件麻烦事,特别对于看重效率,便捷性和结构的程序员来说,热更新就是运营人员的不懂技术的表现. 然而,对于上线才是刚刚开始的网络游戏,特别是手游来说,热更新是极为重要的基础功能. 为什么要热更新 客户端 1.适应上线需求 对于手游客户端来说,受到苹果审核的约束, 一次审核提交需要10~20天不等的等待时间.而这段时间,开发进度依然会推进很多. 一旦

Cordova 代码热更新 - 简书

原文:Cordova 代码热更新 - 简书 Cordova 代码热更新 [图片上传失败...(image-a19be7-1521624289049)] 基于 Cordova 框架能将网页应用 (js, html, css, 图片等) 打包成 App.当 App 在应用商店上架后,如何快速更新是我们需要考虑的问题.?? 本地打包新版本 App 发布到应用商店,但这中发布流程耗费时间,尤其是 Apple Store 应用加载网络资源,这样 App 展示的内容就可以保证是最新的,但当应用断网时,应用就

Unity代码热更新方案 JSBinding + SharpKit 介绍

目前Unity的代码更新方案有很多,主要以lua为主. JSBinding + SharpKit 是一种新的技术,他做了两件事情: JSBinding将C#导出到JS中,让你可以用JS写代码,就好像 lua 一样 SharpKit(sharpkit.net)将C#代码翻译成JS代码. 因此,他可以让你使用C#编译代码,之后一键转换成JS代码并正常运行.如果你的项目已经使用C#开发并希望能够更新代码,欢迎尝试使用. 本文先做简介,后续本博客将做详细介绍. 完全支持序列化功能.即可以在 Inspec

nodeJs 代码热更新

在开发node过程中,每次修改代码都需要重新启动服务,是一件很抓狂的事情 使用nodemon热加载可以帮我们很好的解决这一问题 1. 安装 npm install nodemon -g 2. 修改npm启动项 "scripts": { "start": "nodemon ./bin/www" } 3. 开启服务 npm run start 原文地址:https://www.cnblogs.com/xiaoliwang/p/10105125.htm

IOS热更新-JSPatch实现原理+Patch现场恢复

关于HotfixPatch 在IOS开发领域,由于Apple严格的审核标准和低效率,IOS应用的发版速度极慢,稍微大型的app发版基本上都在一个月以上,所以代码热更新(HotfixPatch)对于IOS应用来说就显得尤其重要. 现在业内基本上都在使用WaxPatch方案,由于Wax框架已经停止维护四五年了,所以waxPatch在使用过程中还是存在不少坑(比如参数转化过程中的问题,如果继承类没有实例化修改继承类的方法无效, wax_gc中对oc中instance的持有延迟释放...).另外苹果对于

分析erlang热更新实现机制

Joe Armstrong在描述Erlang的设计要求时,就提到了软件维护应该能在不停止系统的情况下进行.在实践中,我们也因为这种不停止服务的热更新获益良多.那么Erlang是如何做到热更新的呢?这就是本文要讨论的问题. 在前面的文章也说到了.erlang VM为每个模块最多保存2份代码,当前版本'current'和旧版本'old',当模块第一次被加载时,代码就是'current'版本.如果有新的代码被加载,'current'版本代码就变成了'old'版本,新的代码就成了'current'版本.

Unity热更新方案(uLua vs sLua)

首先附上这两个项目的地址,这两个项目都是比较完善的lua解决方案,从效率和使用方式上说都不相伯仲,我最终选择了ulua,但是并不是说其具有压倒性优势. uLua:http://ulua.org/index.html sLua:https://github.com/pangweiwei/slua 引入lua,基本上就是为了热更新,不过后面苹果似乎对lua脚本的热更新也限制的很严格,拿脚本做热更新也要偷偷摸摸的去做.所以说我一贯的观点是游戏框架设计的合理些(比如技能.界面中可以用配置的,尽量不要硬编

Cordova热更新和App升级 - 简书

原文:Cordova热更新和App升级 - 简书 公司的cordova项目前段时间增加了热更新功能,自己第一次做的时候在网上查找了很多资料,有的资料写的并不全面遇到了很多坑.因此总结一些在开发过程中遇到了问题和解决办法. cordova项目热更新分为两个部分,网页内容(web content)更新和Cordova插件(native side)更新.前者是网页内容,后者是 cordova 插件.web content 的运行是基于 native side.如:登录页面的微信登录,需要在项目中集成微

客户端热更新框架之UI热更框架设计(上)

什么是热更新,为什么需要热更新?热更新是目前各大手游等众多App常用的更新方式.简单来说就是在用户通过App Store下载App之后,打开App时遇到的即时更新.对于手游客户端来说,受到苹果审核的约束, 一次审核提交需要10~20天不等的等待时间.而这段时间开发进度依然会推进很多,一旦手游上线,第一个版本在玩家疯狂行为下,出点问题是必然的,所以"在线更新" 就成了家常便饭与必然.如果你要求必须整体重新下载完整下载包体,无法热更, 那么10~20多天后,游戏估计就没啥人了. 热更新要解