参考原文 https://blog.csdn.net/ldy3243942/article/details/40712475
代码用的原来只是自己加了一些操作流程
swoole_reload_server.php
<?php /** * Example for swoole reload php code without shutdowning server. * * @author Lancelot https://github.com/LinkedDestiny */ class Server <?php /** * Example for swoole reload php code without shutdowning server. * * @author Lancelot https://github.com/LinkedDestiny */ 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"; }
操作流程如下
这个时候 reload_page.php 函数还是
扫描二维码关注公众号,回复:
1245609 查看本文章
大神代码里的注释试修改这个 那么我们开始修改 再执行.sh脚本 看看是否有变化
尝试修改为
然后执行脚本呢 脚本 记得 chmod a+x 授权一下
发现这个原来的sever改变了
变成了 i‘m fun 这里没加换行 大概就这样实现了热重启