Hyperf热更新
本文编写于 2020-10-28
,部分观点可能已经过时。
前言
最近想在新项目中使用 Hyperf
,但是在尝试没多久之后,就遇到了各种问题。
其中比较头疼的就是热更新。
方案
手动停止、启动项目
这是一个比较累的工作。
使用IDE监测文件的保存
大部分 IDE
中都存在这个功能。
Sublime
在这方面并不是很友好,当然,对于大神级别的应该不是问题。
手动编译
因为我用的是 Sublime
,所以我这边举一个 Sublime
的例子。
首先,创建一个编译系统。Tools
-> Build System
-> New Build System...
接着,编写执行时需要执行的命令。(我本地使用的是 Docker
,只需要重启容器就好)
接着,保存为 Hyperf.sublime-build
。并选择 Hyperf
作为编译系统。
最后,编写完代码之后,Ctrl+B
一键编译。
使用watch改造
基于 Swoole
的 Process/Timer/Event
实现,定时扫描文件并监听文件变动重启服务。
不依赖其它扩展,性能表现一般,全平台可用,体验较好(可在控制台直接输出运行日志)。
下载地址:Github 传送门
使用方式:
复制
watch
文件到项目根目录,即bin
目录所在的那一层。启动
php watch -c
可能遇到的问题:
在 Docker
中,一直因为 9501
端口被监听,导致重启 Hyperf
失败。
解决方式:
修改 @change
方法,如下:
function change()
{
global $serve;
echo CONSOLE_COLOR_YELLOW . "🔄 Restart @ " . date('Y-m-d H:i:s') . PHP_EOL;
// Process::kill($serve->pid);
shell_exec('kill -9 ' . $serve->pid);
start();
}
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!