zhamao-framework/assets/js/33.9684a4f8.js
2024-09-19 08:29:13 +00:00

1 line
3.1 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(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}}]);