mirror of
https://github.com/zhamao-robot/zhamao-framework.git
synced 2026-03-17 20:54:52 +08:00
107 lines
32 KiB
HTML
107 lines
32 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="en-US">
|
||
<head>
|
||
<meta charset="utf-8">
|
||
<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
|
||
<title>框架高级启动 | 炸毛框架 v3</title>
|
||
<meta name="description" content="">
|
||
<meta name="generator" content="VuePress 1.9.10">
|
||
<link rel="icon" href="/logo_trans.png">
|
||
<script>
|
||
var _hmt = _hmt || [];
|
||
(function () {
|
||
var hm = document.createElement("script");
|
||
hm.src = "https://hm.baidu.com/hm.js?f0f276cefa10aa31a20ae3815a50b795";
|
||
var s = document.getElementsByTagName("script")[0];
|
||
s.parentNode.insertBefore(hm, s);
|
||
})();
|
||
</script>
|
||
<meta name="description" content="一个高性能聊天机器人 + Web 框架">
|
||
<link rel="preload" href="/assets/css/0.styles.de075592.css" as="style"><link rel="preload" href="/assets/js/app.cf958133.js" as="script"><link rel="preload" href="/assets/js/2.4c04991c.js" as="script"><link rel="preload" href="/assets/js/1.d8755a39.js" as="script"><link rel="preload" href="/assets/js/25.b0d69869.js" as="script"><link rel="prefetch" href="/assets/js/10.960912c3.js"><link rel="prefetch" href="/assets/js/11.cd171694.js"><link rel="prefetch" href="/assets/js/12.ff9ca1d1.js"><link rel="prefetch" href="/assets/js/13.a56deac8.js"><link rel="prefetch" href="/assets/js/14.b222a011.js"><link rel="prefetch" href="/assets/js/15.31489867.js"><link rel="prefetch" href="/assets/js/16.e921dbc4.js"><link rel="prefetch" href="/assets/js/17.58f730d3.js"><link rel="prefetch" href="/assets/js/18.26c46c49.js"><link rel="prefetch" href="/assets/js/19.ee0bfd3b.js"><link rel="prefetch" href="/assets/js/20.bb3578b8.js"><link rel="prefetch" href="/assets/js/21.e66f7fe5.js"><link rel="prefetch" href="/assets/js/22.cba8ca48.js"><link rel="prefetch" href="/assets/js/23.cb49f41c.js"><link rel="prefetch" href="/assets/js/24.d95b175a.js"><link rel="prefetch" href="/assets/js/26.8e7089c0.js"><link rel="prefetch" href="/assets/js/27.333a53a1.js"><link rel="prefetch" href="/assets/js/28.df4b871c.js"><link rel="prefetch" href="/assets/js/29.5427ad45.js"><link rel="prefetch" href="/assets/js/3.07fc018e.js"><link rel="prefetch" href="/assets/js/30.7cb7445a.js"><link rel="prefetch" href="/assets/js/31.5c4bb546.js"><link rel="prefetch" href="/assets/js/32.7fc05474.js"><link rel="prefetch" href="/assets/js/33.9684a4f8.js"><link rel="prefetch" href="/assets/js/34.83e32a28.js"><link rel="prefetch" href="/assets/js/35.95d03df6.js"><link rel="prefetch" href="/assets/js/36.80aace42.js"><link rel="prefetch" href="/assets/js/37.1eaed2ee.js"><link rel="prefetch" href="/assets/js/38.75fa7a1c.js"><link rel="prefetch" href="/assets/js/39.117f5802.js"><link rel="prefetch" href="/assets/js/4.6623271b.js"><link rel="prefetch" href="/assets/js/40.57eba153.js"><link rel="prefetch" href="/assets/js/41.89c4a7c8.js"><link rel="prefetch" href="/assets/js/42.d8f92f99.js"><link rel="prefetch" href="/assets/js/43.5ee83631.js"><link rel="prefetch" href="/assets/js/44.c09b5b0c.js"><link rel="prefetch" href="/assets/js/45.bd850606.js"><link rel="prefetch" href="/assets/js/46.732b1cef.js"><link rel="prefetch" href="/assets/js/47.2a872d0d.js"><link rel="prefetch" href="/assets/js/48.959e18f4.js"><link rel="prefetch" href="/assets/js/49.a9bb32f7.js"><link rel="prefetch" href="/assets/js/5.073233e8.js"><link rel="prefetch" href="/assets/js/50.ca90a854.js"><link rel="prefetch" href="/assets/js/51.79142530.js"><link rel="prefetch" href="/assets/js/52.fe63ad16.js"><link rel="prefetch" href="/assets/js/53.ed84845a.js"><link rel="prefetch" href="/assets/js/54.3ab7e492.js"><link rel="prefetch" href="/assets/js/55.9028e407.js"><link rel="prefetch" href="/assets/js/56.8173f798.js"><link rel="prefetch" href="/assets/js/57.2166b068.js"><link rel="prefetch" href="/assets/js/58.7c52b6bf.js"><link rel="prefetch" href="/assets/js/59.e9965a7b.js"><link rel="prefetch" href="/assets/js/60.f277436c.js"><link rel="prefetch" href="/assets/js/61.3712f8fe.js"><link rel="prefetch" href="/assets/js/8.899a0731.js"><link rel="prefetch" href="/assets/js/9.e2e8da12.js"><link rel="prefetch" href="/assets/js/vendors~docsearch.303532f0.js">
|
||
<link rel="stylesheet" href="/assets/css/0.styles.de075592.css">
|
||
</head>
|
||
<body>
|
||
<div id="app" data-server-rendered="true"><div class="theme-container"><header class="navbar"><div class="ant-row"><div class="nav-button"><i aria-label="icon: bars" class="anticon anticon-bars"><svg viewBox="0 0 1024 1024" focusable="false" data-icon="bars" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M912 192H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 284H328c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h584c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM104 228a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0zm0 284a56 56 0 1 0 112 0 56 56 0 1 0-112 0z"></path></svg></i> <span></span></div> <div class="ant-col ant-col-xs-24 ant-col-sm-24 ant-col-md-6 ant-col-lg-6 ant-col-xl-5 ant-col-xxl-4"><a href="/" class="router-link-active home-link"><img src="/logo_trans.png" alt="炸毛框架 v3" class="logo"> <span class="site-name">炸毛框架 v3</span></a> <div class="search-box mobile-search"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div></div> <div class="nav-space-between ant-col ant-col-xs-0 ant-col-sm-0 ant-col-md-18 ant-col-lg-18 ant-col-xl-19 ant-col-xxl-20"><div class="search-box"><input aria-label="Search" autocomplete="off" spellcheck="false" value=""> <!----></div> <nav class="nav-links can-hide"><ul role="menu" id="nav" class="ant-menu ant-menu-horizontal ant-menu-root ant-menu-light"><li role="menuitem" class="ant-menu-submenu ant-menu-submenu-horizontal ant-menu-overflowed-submenu" style="display:none;"><div aria-haspopup="true" class="ant-menu-submenu-title"><span>···</span><i class="ant-menu-submenu-arrow"></i></div></li><li role="menuitem" class="ant-menu-item"><a href="/guide/">
|
||
指南
|
||
</a></li><li role="menuitem" class="ant-menu-submenu ant-menu-submenu-horizontal ant-menu-overflowed-submenu" style="display:none;"><div aria-haspopup="true" class="ant-menu-submenu-title"><span>···</span><i class="ant-menu-submenu-arrow"></i></div></li><li role="menuitem" class="ant-menu-item"><a href="/event/">
|
||
事件
|
||
</a></li><li role="menuitem" class="ant-menu-submenu ant-menu-submenu-horizontal ant-menu-overflowed-submenu" style="display:none;"><div aria-haspopup="true" class="ant-menu-submenu-title"><span>···</span><i class="ant-menu-submenu-arrow"></i></div></li><li role="menuitem" class="ant-menu-item"><a href="/components/bot/bot-context.html">
|
||
组件
|
||
</a></li><li role="menuitem" class="ant-menu-submenu ant-menu-submenu-horizontal ant-menu-overflowed-submenu" style="display:none;"><div aria-haspopup="true" class="ant-menu-submenu-title"><span>···</span><i class="ant-menu-submenu-arrow"></i></div></li><li role="menuitem" class="ant-menu-item"><a href="/plugins/management.html">
|
||
插件
|
||
</a></li><li role="menuitem" class="ant-menu-submenu ant-menu-submenu-horizontal ant-menu-overflowed-submenu" style="display:none;"><div aria-haspopup="true" class="ant-menu-submenu-title"><span>···</span><i class="ant-menu-submenu-arrow"></i></div></li><li role="menuitem" class="ant-menu-item ant-menu-item-selected"><a href="/advanced/" class="router-link-active">
|
||
进阶
|
||
</a></li><li role="menuitem" class="ant-menu-submenu ant-menu-submenu-horizontal ant-menu-overflowed-submenu" style="display:none;"><div aria-haspopup="true" class="ant-menu-submenu-title"><span>···</span><i class="ant-menu-submenu-arrow"></i></div></li><li role="menuitem" class="ant-menu-item"><a href="/update/v3.html">
|
||
更新日志
|
||
</a></li><li role="menuitem" class="ant-menu-submenu ant-menu-submenu-horizontal ant-menu-overflowed-submenu" style="display:none;"><div aria-haspopup="true" class="ant-menu-submenu-title"><span>···</span><i class="ant-menu-submenu-arrow"></i></div></li><li role="menuitem" class="ant-menu-item"><a href="/doxy/" target="_blank">
|
||
API 文档
|
||
<i aria-label="icon: link" class="anticon anticon-link"><svg viewBox="64 64 896 896" focusable="false" data-icon="link" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M574 665.4a8.03 8.03 0 0 0-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8a8.03 8.03 0 0 0-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zm258.6-474c-84.6-84.6-221.5-84.6-306 0L410.3 307.6a8.03 8.03 0 0 0 0 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6a8.03 8.03 0 0 0 0 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1zM610.1 372.3a8.03 8.03 0 0 0-11.3 0L372.3 598.7a8.03 8.03 0 0 0 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z"></path></svg></i></a></li><li role="menuitem" class="ant-menu-submenu ant-menu-submenu-horizontal ant-menu-overflowed-submenu" style="display:none;"><div aria-haspopup="true" class="ant-menu-submenu-title"><span>···</span><i class="ant-menu-submenu-arrow"></i></div></li><li role="menuitem" class="ant-menu-item"><a href="https://docs-v2.zhamao.xin/" target="_blank">
|
||
炸毛框架 v2
|
||
<i aria-label="icon: link" class="anticon anticon-link"><svg viewBox="64 64 896 896" focusable="false" data-icon="link" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M574 665.4a8.03 8.03 0 0 0-11.3 0L446.5 781.6c-53.8 53.8-144.6 59.5-204 0-59.5-59.5-53.8-150.2 0-204l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3l-39.8-39.8a8.03 8.03 0 0 0-11.3 0L191.4 526.5c-84.6 84.6-84.6 221.5 0 306s221.5 84.6 306 0l116.2-116.2c3.1-3.1 3.1-8.2 0-11.3L574 665.4zm258.6-474c-84.6-84.6-221.5-84.6-306 0L410.3 307.6a8.03 8.03 0 0 0 0 11.3l39.7 39.7c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c53.8-53.8 144.6-59.5 204 0 59.5 59.5 53.8 150.2 0 204L665.3 562.6a8.03 8.03 0 0 0 0 11.3l39.8 39.8c3.1 3.1 8.2 3.1 11.3 0l116.2-116.2c84.5-84.6 84.5-221.5 0-306.1zM610.1 372.3a8.03 8.03 0 0 0-11.3 0L372.3 598.7a8.03 8.03 0 0 0 0 11.3l39.6 39.6c3.1 3.1 8.2 3.1 11.3 0l226.4-226.4c3.1-3.1 3.1-8.2 0-11.3l-39.5-39.6z"></path></svg></i></a></li><li role="menuitem" class="ant-menu-submenu ant-menu-submenu-horizontal ant-menu-overflowed-submenu" style="visibility:hidden;position:absolute;"><div aria-haspopup="true" class="ant-menu-submenu-title"><span>···</span><i class="ant-menu-submenu-arrow"></i></div></li></ul> <ul class="extra-group"><li><a href="https://github.com/zhamao-robot/zhamao-framework" target="_blank" rel="noopener noreferrer" class="repo-link"><i aria-label="icon: github" class="anticon anticon-github"><svg viewBox="64 64 896 896" focusable="false" data-icon="github" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M511.6 76.3C264.3 76.2 64 276.4 64 523.5 64 718.9 189.3 885 363.8 946c23.5 5.9 19.9-10.8 19.9-22.2v-77.5c-135.7 15.9-141.2-73.9-150.3-88.9C215 726 171.5 718 184.5 703c30.9-15.9 62.4 4 98.9 57.9 26.4 39.1 77.9 32.5 104 26 5.7-23.5 17.9-44.5 34.7-60.8-140.6-25.2-199.2-111-199.2-213 0-49.5 16.3-95 48.3-131.7-20.4-60.5 1.9-112.3 4.9-120 58.1-5.2 118.5 41.6 123.2 45.3 33-8.9 70.7-13.6 112.9-13.6 42.4 0 80.2 4.9 113.5 13.9 11.3-8.6 67.3-48.8 121.3-43.9 2.9 7.7 24.7 58.3 5.5 118 32.4 36.8 48.9 82.7 48.9 132.3 0 102.2-59 188.1-200 212.9a127.5 127.5 0 0 1 38.1 91v112.5c.8 9 0 17.9 15 17.9 177.1-59.7 304.6-227 304.6-424.1 0-247.2-200.4-447.3-447.5-447.3z"></path></svg></i></a></li> <!----></ul></nav></div></div> <!----></header> <aside class="sidebar"><!----> <ul class="sidebar-links"><li><section class="sidebar-group depth-0"><p class="sidebar-heading open"><span>进阶</span> <!----></p> <ul class="sidebar-links sidebar-group-items"><li><a href="/advanced/" aria-current="page" title="进阶" class="sidebar-link">进阶</a></li><li><a href="/advanced/multi-process.html" title="框架的多进程" class="sidebar-link">框架的多进程</a></li><li><a href="/advanced/custom-start.html" aria-current="page" title="框架高级启动" class="active sidebar-link">框架高级启动</a><ul class="sidebar-sub-headers"><li class="sidebar-sub-header"><a href="/advanced/custom-start.html#框架安装方式" title="框架安装方式" class="sidebar-link">框架安装方式</a></li><li class="sidebar-sub-header"><a href="/advanced/custom-start.html#框架启动参数" title="框架启动参数" class="sidebar-link">框架启动参数</a></li></ul></li></ul></section></li></ul> </aside> <main class="page has-page-anchor"> <div class="theme-antdocs-content content__default"><h1 id="框架高级启动"><a href="#框架高级启动" class="header-anchor">#</a> 框架高级启动</h1> <h2 id="框架安装方式"><a href="#框架安装方式" class="header-anchor">#</a> 框架安装方式</h2> <p>框架提供了多种安装和运行的方式。</p> <ul><li>Composer 库引入模式</li> <li>源码模式</li> <li>Phar Composer 库引入模式</li> <li>Phar 源码模式</li> <li>单文件模式</li></ul> <h3 id="composer-库引入模式"><a href="#composer-库引入模式" class="header-anchor">#</a> Composer 库引入模式</h3> <p>框架在最初的指南教程中,给出的安装方式是 Composer 库引入模式,这种模式安装框架也是比较灵活的。
|
||
Composer 库引入模式,顾名思义就是把框架本体当作一个 Composer 库来引入,这样就可以通过 Composer 来管理框架的版本,例如使用 <code>composer update</code> 更新。</p> <p>Composer 库引入模式的文件夹结构如下,我们假设你的项目目录为 <code>/root/zhamao-v3</code>:</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>/root/zhamao-v3/
|
||
├── composer.json // 引入框架和项目的 composer.json 描述文件
|
||
├── composer.lock // Composer 生成的 lock 文件
|
||
├── config/ // 炸毛框架依赖的全局配置文件
|
||
│ ├── global.php // 全局配置文件,大部分配置项在这里配置
|
||
│ ├── container.php // 框架的容器配置文件
|
||
│ └── motd.txt // 框架启动时的 MOTD 提示语
|
||
├── plugins/ // 开发者编写和安装的插件目录
|
||
│ ├── example/ // 插件示例,这里以名称为 example 的插件为例
|
||
│ │ ├── main.php // 这个插件使用了单文件格式,main.php 为插件的核心代码
|
||
│ │ └── composer.json // 这个文件描述了炸毛框架插件的元信息,包括插件名称、版本、作者等
|
||
├── vendor/ // 你自身项目的依赖库,由 Composer 生成
|
||
│ ├── zhamao/
|
||
│ │ └── framework/ // 框架的本体源码根目录
|
||
│ │ ├── src/ZM/ // 框架的核心代码
|
||
│ │ └── ...... // 框架的根目录其他文件
|
||
│ └── ....... // 其他依赖库
|
||
├── zhamao // 启动炸毛框架的入口文件
|
||
└── zm_data/ // 存放框架依赖的持久化数据目录,如日志、缓存等
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br></div></div><h3 id="源码模式"><a href="#源码模式" class="header-anchor">#</a> 源码模式</h3> <p>源码模式不是指开发者的源码,而是框架的源码。也就是说,源码模式是从 GitHub 直接拉取框架源码仓库后使用框架的模式。
|
||
源码模式允许你对框架本身进行一系列修改,框架本体就可以直接运行。例如,你可以在框架的源码中添加一些自己的代码,或者修改框架的某些功能。</p> <p>源码模式的结构和 Composer 库引入模式有些许不同,因为框架本身就是一个项目,所以它的目录结构也是一个项目的目录结构。</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>/root/zhamao-framework/
|
||
├── composer.json // 框架本身的 composer.json
|
||
├── composer.lock // Composer 生成的 lock 文件
|
||
├── config/ // 炸毛框架依赖的全局配置文件
|
||
│ ├── global.php // 全局配置文件,大部分配置项在这里配置
|
||
│ ├── container.php // 框架的容器配置文件
|
||
│ └── motd.txt // 框架启动时的 MOTD 提示语
|
||
├── plugins/ // 开发者编写和安装的插件目录
|
||
│ ├── example/ // 插件示例,这里以名称为 example 的插件为例
|
||
│ │ ├── main.php // 这个插件使用了单文件格式,main.php 为插件的核心代码
|
||
│ │ └── composer.json // 这个文件描述了炸毛框架插件的元信息,包括插件名称、版本、作者等
|
||
├── src/ // 框架的本体源码根目录
|
||
│ ├── ZM/ // 框架的核心代码
|
||
│ └── ...... // 框架的根目录其他文件
|
||
├── vendor/ // 框架本身依赖的 Composer 库文件夹
|
||
│ └── ....... // 其他依赖库
|
||
├── zhamao // 启动炸毛框架的入口文件
|
||
└── zm_data/ // 存放框架依赖的持久化数据目录,如日志、缓存等
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br></div></div><p>源码模式下你可以在 <code>src/</code> 目录编写你的项目或修改框架源码运行,此时在 <code>src/</code> 下的代码虽然在设置 psr-4 自动加载后会被框架解析,但在该目录下的代码不属于插件的范畴。
|
||
如果你不喜欢在插件的形式下开发自己的功能,也可以直接在 src 目录下编写代码。这种方式除了源码模式外,Composer 库引入模式下也可以在你的目录新建一个 <code>src/</code> 文件夹并设置自动加载,
|
||
以实现在非插件环境下加载你的项目。</p> <h3 id="phar-模式"><a href="#phar-模式" class="header-anchor">#</a> Phar 模式</h3> <p>Phar 模式的意思是将框架和依赖的相关 Composer 库打包为一个可直接使用的 Phar 文件,框架必需的依赖(除 PECL 扩展外)均被包含在一个文件内,方便框架本体分发。</p> <p>Phar 模式主要面向发布到生产环境和减少小文件,但使用 Phar 模式不便于依赖的更新,所有依赖的库将锁定在打包时的版本。</p> <p>Phar 模式也分两个小种类,Composer 库引入模式和源码模式。如果你不关注框架本体目录,仅开发功能,无论使用插件形式还是 <code>src/</code> 形式,那么在使用上这两种方式没有区别。</p> <p>框架在未来发布版本时,会同时发布一个打包好的 Phar 版本,你可以直接下载使用。</p> <p>在使用 Phar 时,你的目录结构可能为这样:</p> <div class="language- line-numbers-mode"><pre class="language-text"><code>/root/your-zhamao-app/
|
||
├── plugins/ // 开发者编写和安装的插件目录
|
||
│ ├── example/ // 插件示例,这里以名称为 example 的插件为例
|
||
│ │ ├── main.php // 这个插件使用了单文件格式,main.php 为插件的核心代码
|
||
│ │ └── composer.json // 这个文件描述了炸毛框架插件的元信息,包括插件名称、版本、作者等
|
||
├── config/ // 配置文件目录
|
||
├── zhamao.phar // 炸毛框架本体的 Phar
|
||
├── zm_data/ // 存放框架依赖的持久化数据目录,如日志、缓存等
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br></div></div><h3 id="单文件模式"><a href="#单文件模式" class="header-anchor">#</a> 单文件模式</h3> <p>单文件模式和 Phar 模式几乎一样,单文件模式为一个单独的二进制文件,这个二进制文件使用 phpmicro 项目的打包功能将 php-cli 和炸毛框架的 Phar 合成为一个文件,
|
||
即可直接使用。这种方式的好处是不需要额外的 php-cli 环境,但是文件体积会比 Phar 模式大一些。</p> <h2 id="框架启动参数"><a href="#框架启动参数" class="header-anchor">#</a> 框架启动参数</h2> <p>框架启动时可以传入一些参数,这些命令行参数是用于框架启动时的配置。</p> <blockquote><p>这里框架启动参数指的是 <code>./zhamao server</code> 启动框架的参数,而不是 <code>./zhamao</code> 命令的参数。有关 <code>./zhamao</code> 命令的其他功能,可以参考 <a href="/components/common/cli.html">组件 - 命令行</a>。</p></blockquote> <h3 id="config-dir"><a href="#config-dir" class="header-anchor">#</a> --config-dir</h3> <p>指定配置文件目录,如果不指定,框架会使用默认的配置文件目录。</p> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code>./zhamao server --config-dir<span class="token operator">=</span>/path/to/your/config/dir
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><h3 id="driver"><a href="#driver" class="header-anchor">#</a> --driver</h3> <p>指定框架使用的驱动,目前支持 <code>swoole</code> 和 <code>workerman</code> 两种驱动,如果不指定,框架会采用 <code>config/global.php</code> 配置文件内的驱动。</p> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code>./zhamao server <span class="token parameter variable">--driver</span><span class="token operator">=</span>swoole
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><h3 id="log-level"><a href="#log-level" class="header-anchor">#</a> --log-level</h3> <p>指定框架组件 zhamao/logger 显示日志的等级。logger 组件符合 psr-3 日志接口,支持设置 8 个等级:</p> <p><code>emergency</code>、<code>alert</code>、<code>critical</code>、<code>error</code>、<code>warning</code>、<code>notice</code>、<code>info</code>、<code>debug</code>。</p> <div class="custom-block warning"><p class="custom-block-title">注意</p> <p>如果你想采用其他 psr-3 日志组件,此配置无效。</p></div> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code>./zhamao server --log-level<span class="token operator">=</span>debug
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><h3 id="daemon"><a href="#daemon" class="header-anchor">#</a> --daemon</h3> <p>以守护进程模式启动框架。此参数将直接在输出 motd 后将进程挂到 init 下运行,后台常驻。</p> <blockquote><p>单进程模式下,此参数无效。</p></blockquote> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code>./zhamao server <span class="token parameter variable">--daemon</span> <span class="token comment"># 执行后,你可以退出当前终端而不退出框架</span>
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><h3 id="worker-num"><a href="#worker-num" class="header-anchor">#</a> --worker-num</h3> <p>指定框架启动的 worker 进程数。未指定时默认采用 <code>config/global.php</code> 下对应驱动的配置(默认为 1)。</p> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code>./zhamao server --worker-num<span class="token operator">=</span><span class="token number">8</span>
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><div class="custom-block warning"><p class="custom-block-title">注意</p> <ul><li>在启动多 worker 时,需要注意无法使用 LightCache,必须切换为 KVRedis 等支持跨进程的组件。</li> <li>Windows 环境不支持设置进程数。</li></ul></div> <h3 id="watch"><a href="#watch" class="header-anchor">#</a> --watch</h3> <p>启动框架的热更新,并启用调试模式。</p> <blockquote><p>此功能暂未完成,敬请期待。</p></blockquote> <h3 id="env"><a href="#env" class="header-anchor">#</a> --env</h3> <p>设置环境类型 (production, development, staging)。</p> <p>如果不设置此参数,框架默认使用 development 环境类型。</p> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code>./zhamao server <span class="token parameter variable">--env</span><span class="token operator">=</span>production
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><h3 id="disable-safe-exit"><a href="#disable-safe-exit" class="header-anchor">#</a> --disable-safe-exit</h3> <p>禁用安全退出。如果不设置此参数,框架会在收到 SIGINT 信号时,等待所有请求处理完毕后再退出。
|
||
设置此参数后,使用键盘 Ctrl+C 会立刻停止所有进程,不会执行退出框架的正常流程,例如保存 LightCache 持久化数据等。</p> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code>./zhamao server --disable-safe-exit
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><h3 id="no-state-check"><a href="#no-state-check" class="header-anchor">#</a> --no-state-check</h3> <p>取消框架在启动前的重复启动检查。如果不设置此参数,框架会在启动前检查是否有其他进程正在运行,如果有则会退出。
|
||
设置此参数后,框架会忽略重复启动检查,可能会导致多个框架进程同时运行。</p> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code>./zhamao server --no-state-check
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br></div></div><h3 id="private-mode"><a href="#private-mode" class="header-anchor">#</a> --private-mode</h3> <p>启动时隐藏框架的配置信息和 MOTD,避免打印到终端。配合 logger 组件的选项可以达到启动时除紧急日志外没有任何输出内容到终端。</p> <div class="language-bash line-numbers-mode"><pre class="language-bash"><code>./zhamao server --private-mode
|
||
./zhamao server --private-mode --log-level<span class="token operator">=</span>emergency
|
||
</code></pre> <div class="line-numbers-wrapper"><span class="line-number">1</span><br><span class="line-number">2</span><br></div></div></div> <footer class="page-edit"><div class="edit-link"><a href="https://github.com/zhamao-robot/zhamao-framework/edit/main/docs/advanced/custom-start.md" target="_blank" rel="noopener noreferrer">Edit this page</a> <span><svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false" x="0px" y="0px" viewBox="0 0 100 100" width="15" height="15" class="icon outbound"><path fill="currentColor" d="M18.8,85.1h56l0,0c2.2,0,4-1.8,4-4v-32h-8v28h-48v-48h28v-8h-32l0,0c-2.2,0-4,1.8-4,4v56C14.8,83.3,16.6,85.1,18.8,85.1z"></path> <polygon fill="currentColor" points="45.7,48.7 51.3,54.3 77.2,28.5 77.2,37.2 85.2,37.2 85.2,14.9 62.8,14.9 62.8,22.9 71.5,22.9"></polygon></svg> <span class="sr-only">(opens new window)</span></span></div> <!----></footer> <div class="page-nav"><p class="inner"><span class="prev"><a href="/advanced/multi-process.html" class="prev"><i aria-label="icon: left" class="anticon anticon-left"><svg viewBox="64 64 896 896" focusable="false" data-icon="left" width="1em" height="1em" fill="currentColor" aria-hidden="true"><path d="M724 218.3V141c0-6.7-7.7-10.4-12.9-6.3L260.3 486.8a31.86 31.86 0 0 0 0 50.3l450.8 352.1c5.3 4.1 12.9.4 12.9-6.3v-77.3c0-4.9-2.3-9.6-6.1-12.6l-360-281 360-281.1c3.8-3 6.1-7.7 6.1-12.6z"></path></svg></i>
|
||
框架的多进程
|
||
</a></span> <!----></p></div> <div class="page-anchor"><div class="ant-space ant-space-vertical" style="width:100%;"><div class="ant-space-item"><div class="page-anchor-offset"><div><div class="ant-anchor-wrapper" style="max-height:100vh;"><div class="ant-anchor"><div class="ant-anchor-ink"><span class="ant-anchor-ink-ball"></span></div><div class="ant-anchor-link"><a href="#框架安装方式" title="框架安装方式" class="ant-anchor-link-title">框架安装方式</a><div class="ant-anchor-link"><a href="#composer-库引入模式" title="Composer 库引入模式" class="ant-anchor-link-title">Composer 库引入模式</a></div><div class="ant-anchor-link"><a href="#源码模式" title="源码模式" class="ant-anchor-link-title">源码模式</a></div><div class="ant-anchor-link"><a href="#phar-模式" title="Phar 模式" class="ant-anchor-link-title">Phar 模式</a></div><div class="ant-anchor-link"><a href="#单文件模式" title="单文件模式" class="ant-anchor-link-title">单文件模式</a></div></div><div class="ant-anchor-link"><a href="#框架启动参数" title="框架启动参数" class="ant-anchor-link-title">框架启动参数</a><div class="ant-anchor-link"><a href="#config-dir" title="--config-dir" class="ant-anchor-link-title">--config-dir</a></div><div class="ant-anchor-link"><a href="#driver" title="--driver" class="ant-anchor-link-title">--driver</a></div><div class="ant-anchor-link"><a href="#log-level" title="--log-level" class="ant-anchor-link-title">--log-level</a></div><div class="ant-anchor-link"><a href="#daemon" title="--daemon" class="ant-anchor-link-title">--daemon</a></div><div class="ant-anchor-link"><a href="#worker-num" title="--worker-num" class="ant-anchor-link-title">--worker-num</a></div><div class="ant-anchor-link"><a href="#watch" title="--watch" class="ant-anchor-link-title">--watch</a></div><div class="ant-anchor-link"><a href="#env" title="--env" class="ant-anchor-link-title">--env</a></div><div class="ant-anchor-link"><a href="#disable-safe-exit" title="--disable-safe-exit" class="ant-anchor-link-title">--disable-safe-exit</a></div><div class="ant-anchor-link"><a href="#no-state-check" title="--no-state-check" class="ant-anchor-link-title">--no-state-check</a></div><div class="ant-anchor-link"><a href="#private-mode" title="--private-mode" class="ant-anchor-link-title">--private-mode</a></div></div></div></div></div></div></div></div></div> </main> <!----></div><div class="global-ui"></div></div>
|
||
<script src="/assets/js/app.cf958133.js" defer></script><script src="/assets/js/2.4c04991c.js" defer></script><script src="/assets/js/1.d8755a39.js" defer></script><script src="/assets/js/25.b0d69869.js" defer></script>
|
||
</body>
|
||
</html> |