php中Swoole的热更新实现代码实例
2021-03-05 04:06
786 查看
使用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的热更新实现内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:相关文章推荐
- 基于Swoole做Socket服务器开发探索与实现PHP代码热更新机制
- 实例讲解php实现中文水印的代码
- php中通过Ajax如何实现异步文件上传的代码实例
- php 微信公众平台开发模式实现多客服的实例代码
- PHP实现多条件查询实例代码
- php递归方法实现无限分类实例代码
- php+jquery+html实现点击不刷新加载更多的实例代码
- 使用php的swoole扩展实现数据实时更新(下)
- php实现文件上传功能的详细代码实例
- php实现视频拍照上传头像功能实例代码
- PHP使用range协议实现输出文件断点续传代码实例
- swoole之代码热更新实现
- php 实现一个字符串加密解密的函数实例代码
- PHP基于SMTP协议实现邮件发送实例代码
- PHP实现微信支付功能开发+实例代码
- 利用discuz实现PHP大文件上传应用实例代码
- php编程实现获取excel文档内容的代码实例
- PHP实现Webservice的实例代码调用教程
- php用header函数实现301跳转代码实例
- php实现验证码识别原理和程序代码实例