mirror of
https://github.com/zhamao-robot/zhamao-framework.git
synced 2026-03-17 20:54:52 +08:00
1 line
3.1 KiB
JavaScript
1 line
3.1 KiB
JavaScript
(window.webpackJsonp=window.webpackJsonp||[]).push([[33],{744:function(s,e,a){"use strict";a.r(e);var t=a(84),v=Object(t.a)({},(function(){var s=this,e=s._self._c;return e("ContentSlotsDistributor",{attrs:{"slot-key":s.$parent.slotKey}},[e("h1",{attrs:{id:"框架调试-热更新和重载"}},[e("a",{staticClass:"header-anchor",attrs:{href:"#框架调试-热更新和重载"}},[s._v("#")]),s._v(" 框架调试 - 热更新和重载")]),s._v(" "),e("div",{staticClass:"custom-block danger"},[e("p",{staticClass:"custom-block-title"},[s._v("WARNING")]),s._v(" "),e("p",[s._v("目前此功能还在开发中,暂不可用。")])]),s._v(" "),e("p",[s._v("框架使用了 Workerman、Swoole、Choir 等驱动作为底层协议和进程管理模型,在使用了 Worker 进程模式启动框架后,你可以使用 Worker 进程的重载功能来更新你的代码。")]),s._v(" "),e("p",[s._v("首先,如果你不了解框架的进程结构,请先了解 "),e("a",{attrs:{href:"/advanced/multi-process"}},[s._v("进阶开发 - 框架的多进程")]),s._v("。")]),s._v(" "),e("p",[s._v("开发者在使用框架开发相应的插件时,经常需要重新载入插件的代码。热更新和重载就是为了在不停止主进程的情况下在 Worker 进程内重新加载代码,以达到代码更新的作用。\n你在插件目录开发的插件代码,一般为 "),e("code",[s._v("plugins/xxx/")]),s._v(" 目录下的代码,均可使用重载功能实现热更新。")]),s._v(" "),e("div",{staticClass:"custom-block warning"},[e("p",{staticClass:"custom-block-title"},[s._v("注意")]),s._v(" "),e("ul",[e("li",[s._v("Linux、macOS 环境使用 Workerman、Swoole 驱动默认配置情况均可使用重载。")]),s._v(" "),e("li",[s._v("Swoole 驱动模式下使用 SWOOLE_BASE 模式,且未设置 Worker 数量时不可使用重载。")]),s._v(" "),e("li",[s._v("Workerman 驱动模式下除 Windows 外均可使用重载。")])])]),s._v(" "),e("p",[s._v("使用重载的方式很简单,在另一个终端内进入框架的工作目录,并执行命令:")]),s._v(" "),e("div",{staticClass:"language-bash line-numbers-mode"},[e("pre",{pre:!0,attrs:{class:"language-bash"}},[e("code",[s._v("./zhamao server:reload\n")])]),s._v(" "),e("div",{staticClass:"line-numbers-wrapper"},[e("span",{staticClass:"line-number"},[s._v("1")]),e("br")])]),e("p",[s._v("或者你也可以在代码中调用 "),e("code",[s._v("\\ZM\\Framework::getInstance()->reload()")]),s._v(" 进行重载。")]),s._v(" "),e("p",[s._v("如果你不想手动调用重载命令或代码,你也可以在启动框架时使用 "),e("code",[s._v("--watch")]),s._v(" 参数来监听 plugins 目录文件变化。")]),s._v(" "),e("p",[s._v("在使用 "),e("code",[s._v("--watch")]),s._v(" 启动热更新功能后,框架将每 3 秒比较一次文件变化(不包含插件内的 vendor 第三方库目录)。涉及更新到 "),e("code",[s._v(".php")]),s._v(" 文件的,将会自动重载一次。\n重载后,所有插件都会按照正常启动流程执行一次,例如执行 "),e("code",[s._v("@Init")]),s._v(" 注解等。")])])}),[],!1,null,null,null);e.default=v.exports}}]); |