Skip to content

CHN 11 drogon_ctl命令

marty1885 edited this page Jul 18, 2021 · 6 revisions

Drogon框架编译安装后,一个命令行程序drogon_ctl也同时被安装于系统,为了方便,还安装了一个完全一样的副本dg_ctl。用户可以按喜好自行选用。

该程序目前的主要功能是为了方便用户创建各种drogon工程文件,使用dg_ctl help命令可以看到它支持的功能,如下:

dg_ctl help
usage: drogon_ctl <command> [<args>]
commands list:
create                  create some source files(Use 'drogon_ctl help create' for more information)
help                    display this message
version                 display version of this tool
press                   Do stress testing(Use 'drogon_ctl help press' for more information)

version子命令

version子命令用于打印目前安装于系统的drogon版本,如下:

 dg_ctl version
     _                             
  __| |_ __ ___   __ _  ___  _ __  
 / _` | '__/ _ \ / _` |/ _ \| '_ \ 
| (_| | | | (_) | (_| | (_) | | | |
 \__,_|_|  \___/ \__, |\___/|_| |_|
                 |___/             

drogon ctl tools
version:0.9.30.771
git commit:d4710d3da7ca9e73b881cbae3149c3a570da8de4
compile config:-O3 -DNDEBUG -Wall -std=c++17 -I/root/drogon/trantor -I/root/drogon/lib/inc -I/root/drogon/orm_lib/inc -I/usr/local/include -I/usr/include/uuid -I/usr/include -I/usr/include/mysql 

create子命令

create子命令用于创建各种对象,目前是drogon_ctl的主要功能,使用dg_ctl help create命令可以打印该命令的详细帮助,如下:

dg_ctl help create
Use create command to create some source files of drogon webapp

Usage:drogon_ctl create <view|controller|filter|project|model> [-options] <object name>

drogon_ctl create view <csp file name> //create HttpView source files from csp file

drogon_ctl create controller [-s] <[namespace::]class_name> //create HttpSimpleController source files

drogon_ctl create controller -h <[namespace::]class_name> //create HttpController source files

drogon_ctl create controller -w <[namespace::]class_name> //create WebSocketController source files

drogon_ctl create filter <[namespace::]class_name> //create a filter named class_name

drogon_ctl create project <project_name> //create a project named project_name

drogon_ctl create model <model_path> //create model classes in model_path

视图创建

dg_ctl create view命令用于从csp文件生成源文件,参见视图一节。一般情况下,该命令不需要直接使用,又cmake文件配置成自动执行是更好的方法。命令例子如下,假设csp文件是UsersList.csp.

dg_ctl create view UsersList.csp

控制器创建

dg_ctl create controller命令用于帮助用户创建控制器的源文件,drogon目前支持的三种控制器都可以由该命令创建,只是参数稍有差别。

  • 创建HttpSimpleController的命令如下:
dg_ctl create controller SimpleControllerTest
dg_ctl create controller webapp::v1::SimpleControllerTest

最后一个参数是控制器的类名,可以在前面附加命名空间。

  • 创建HttpController的命令如下:
dg_ctl create controller -h ControllerTest
dg_ctl create controller -h api::v1::ControllerTest
  • 创建WebSocketController的命令如下:
dg_ctl create controller -w WsControllerTest
dg_ctl create controller -w api::v1::WsControllerTest

参考wiki的控制器各个章节。

过滤器创建

dg_ctl create filter命令用于帮助用户创建过滤器的源文件,参见过滤器一节。

dg_ctl create filter LoginFilter
dg_ctl create filter webapp::v1::LoginFilter

创建工程

用户创建一个新的Drogon应用工程的方法是通过drogon_ctl命令实现,如下:

dg_ctl create project ProjectName

该命令执行完后,在当前目录会创建完整的工程目录,目录名是ProjectName,用户可以直接进build目录编译这个工程,当然他没有任何业务逻辑。

工程的目录结构如下:

├── build                         构建文件夹
├── CMakeLists.txt                工程的cmake配置文件
├── cmake_modules                 第三方库查找的cmake脚本
│   ├── FindJsoncpp.cmake
│   ├── FindMySQL.cmake
│   ├── FindSQLite3.cmake
│   └── FindUUID.cmake
├── config.json                   drogon应用的配置文件,请参考配置文件介绍章节
├── controllers                   存放控制器源文件的目录
├── filters                       存放过滤器文件的目录
├── main.cc                       主程序
├── models                        数据库模型文件的目录,模型源文件创建见11.2.5
│   └── model.json
├── tests                         存放测试程序的目录
│   └── test_main.cc              测试主程序
└── views                         存放视图csp文件的目录,源文件无需用户手动创建,工程编译时会自动预处理csp文件得到视图的源文件

创建模型

使用dg_ctl create model命令创建数据库模型源文件,最后一个参数是模型存放的目录,该目录里必须包含一个名为model.json的模型配置文件,用于告诉dg_ctl如何连接数据库以及映射哪些表。

比如,如果要在上面提到的工程目录里创建模型,请在工程目录下执行如下命令:

dg_ctl create model models

该命令会提示用户目录下已有的文件将被直接覆盖,用户输入y确认后就会生成所有模型文件。其他文件要引用模型类需要include模型的头文件,比如:

#include "models/User.h"

注意要包含models目录名,这是为了区分同一个工程中多个数据源的情况。参见ORM

压力测试

用户可以使用dg_ctl press命令进行压力测试,该命令有几个选项

  • -n num 设置请求的总数(默认是1)
  • -t num 设置线程总数(默认是1), 设置成CPU数目可以达到最大性能
  • -c num 设置并发连接数(默认是1)
  • -q 表示没有中间过程的信息输出(默认输出信息)

例子:

dg_ctl press -n1000000 -t4 -c1000 -q http://localhost:8080/
dg_ctl press -n 1000000 -t 4 -c 1000 https://www.domain.com/path/to/be/tested

Document

Tutorial

中文文档

教程

Clone this wiki locally