php中Swoole的热更新实现代码实例


Posted in PHP onMarch 04, 2021

使用swoole_http_server替代php-fpm后,由于php长驻内存,修改了代码不能实时调试,需要去手动去重启服务,很是不方便,决定使用inotify来监控文件状态的改变,来给swoole发送reload信号,来实现swoole的热更新。

如何安装inotify就不写了,安装之后可以建立一个脚本文件,如php_reload.sh:

#!/bin/sh
# src 需要监控的地址
src=/home/server/Project/test/app/
/usr/bin/inotifywait -rmq -e create,modify,delete $src | while read event
 do
    /home/server/Project/test/bin/httpserver reload
 done

linux shell 写swoole重启脚本

代码如下

#!/bin/sh
kill `lsof -t -i:9501`
sleep 2
php /data/web/mircoweb/wwwroot/Public/swoole.php
sleep 1
netstat -ntlp

如果不支持lsof命令 那就yum install lsof安装下吧

swoole服务平滑重启

1. reload.sh脚本

echo "loading..."
pid="pidof live_name"
echo $pid
kill -USR1 $pid
echo "loading success"

2. linux中执行

sh  reload.sh
代码用的原来只是自己加了一些操作流程

swoole_reload_server.php

<?php
class Server
{
        private $serv;
        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) {
        require_once "reload_page.php";
        Test();
    }
    public function onConnect( $serv, $fd, $from_id ) {
        echo "Client {$fd} connect\n";
 
    }
    public function onReceive( swoole_server $serv, $fd, $from_id, $data ) {
        echo "Get Message From Client {$fd}:{$data}\n";
    }
    public function onClose( $serv, $fd, $from_id ) {
        echo "Client {$fd} close connection\n";
    }
}
new Server();

reload.sh

echo "Reloading..."
cmd=$(pidof reload_master)
 
kill -USR1 "$cmd"
echo "Reloaded"

reload_page.php 

<?php
/**
 * If you change this function and want
 * swoole_server to use the new function,
 * just run 'reload.sh' to send a restart
 * signal to swoole_server.
 */
function Test() {
  echo "This is not a php file\n";
}

到此这篇关于php中SWOOLE的热更新实现代码实例的文章就介绍到这了,更多相关php中SWOOLE的热更新实现内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
发一个php简单的伪原创程序,配合商城采集用的
Oct 12 PHP
php中时间轴开发(刚刚、5分钟前、昨天10:23等)
Oct 03 PHP
PHP页面实现定时跳转的方法
Oct 31 PHP
php实现session自定义会话处理器的方法
Jan 27 PHP
PHP使用curl制作简易百度搜索
Nov 03 PHP
PHP基于新浪IP库获取IP详细地址的方法
May 04 PHP
微信公众号实现会员卡领取功能
Jun 08 PHP
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
Jun 16 PHP
实例介绍PHP中zip_open()函数用法
Feb 15 PHP
yii框架使用分页的方法分析
Jul 25 PHP
laravel5.6 框架操作数据 Eloquent ORM用法示例
Jan 26 PHP
浅谈如何提高PHP代码的质量
May 28 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
Mar 04 #PHP
PHP实现页面静态化深入讲解
Mar 04 #PHP
php实现对短信验证码发送次数的限制实例讲解
Mar 04 #PHP
swoole锁的机制代码实例讲解
Mar 04 #PHP
PHP实现chrome表单请求数据转换为接口使用的json数据
Mar 04 #PHP
windows系统php环境安装swoole具体步骤
Mar 04 #PHP
php中使用array_filter()函数过滤数组实例讲解
Mar 03 #PHP
You might like
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
PHP变量的定义、可变变量、变量引用、销毁方法
2013/12/20 PHP
php防止sql注入示例分析和几种常见攻击正则表达式
2014/01/12 PHP
PHP中PCRE正则解析代码详解
2019/04/26 PHP
js调用flash的效果代码
2008/04/26 Javascript
javascript 不间断的图片滚动并可点击
2010/01/15 Javascript
JS定时器实例详细分析
2013/10/11 Javascript
jquery获取节点名称
2015/04/26 Javascript
JavaScript仿商城实现图片广告轮播实例代码
2016/02/06 Javascript
详解AngularJS中的http拦截
2016/02/09 Javascript
AngularJs  Using $location详解及示例代码
2016/09/02 Javascript
HTML中setCapture、releaseCapture 使用方法浅析
2016/09/25 Javascript
js图片轮播手动切换特效
2017/01/12 Javascript
Avalonjs双向数据绑定与监听的实例代码
2017/06/23 Javascript
动态加载JavaScript文件的3种方式
2018/05/05 Javascript
解决jQuery使用append添加的元素事件无效的问题
2018/08/30 jQuery
vue操作dom元素的3种方法示例
2020/09/20 Javascript
[15:28]DOTA2 HEROS教学视频教你分分钟做大人-剧毒术士
2014/06/13 DOTA
Python二维码生成库qrcode安装和使用示例
2014/12/16 Python
用Python编写生成树状结构的文件目录的脚本的教程
2015/05/04 Python
在Python中执行系统命令的方法示例详解
2017/09/14 Python
Python对象属性自动更新操作示例
2018/06/15 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
Keras loss函数剖析
2020/07/06 Python
python uuid生成唯一id或str的最简单案例
2021/01/13 Python
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
2016/03/22 HTML / CSS
美国性感内衣店:Yandy
2018/06/12 全球购物
丝芙兰墨西哥官网:Sephora墨西哥
2020/05/30 全球购物
PHP数据运算类型都有哪些
2013/11/05 面试题
大学生就业求职信
2014/06/12 职场文书
领导干部四风问题自我剖析材料
2014/09/25 职场文书
2014年店长工作总结
2014/11/17 职场文书
社会实践单位意见
2015/06/05 职场文书
详解Nginx启动失败的几种错误处理
2021/04/01 Servers
Python turtle编写简单的球类小游戏
2022/03/31 Python
Spring Security动态权限的实现方法详解
2022/06/16 Java/Android