2022年2月

eif.png

laravel自带中间件说明:

Authenticate 用户身份验证和重定向

EncryptCookies cookie 的加解密处理和验证

PreventRequestsDuringMaintenance 维护模式

RedirectIfAuthenticated 注册、登录、忘记密码时如果已经登录则跳转

TrimStrings 前后空白字符清理

TrustHosts 配置了受信任主机的白名单

TrustProxies 配置可信代理

VerifyCsrfToken 处理 CSRF 验证

SubstituteBindings 路由参数模型绑定中间件

ThrottleRequests 接口请求频率限制中间件

可以根据它自研引擎

CREATE TABLE `departments` (
  `dept_id` int(11) NOT NULL COMMENT '部门id',
  `dept_name` varchar(255) NOT NULL COMMENT '部门名',
  `leader` varchar(255) DEFAULT NULL COMMENT '部门主管',
  `parent_id` int(11) DEFAULT NULL COMMENT '父部门id',
  `created` datetime DEFAULT NULL COMMENT '创建时间',
  `updated` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`dept_id`),
  KEY `dept_id` (`dept_id`),
  KEY `parent_id` (`parent_id`),
  KEY `leader` (`leader`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `form_groups` (
  `group_id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `group_name` varchar(255) NOT NULL COMMENT '组名',
  `sort_num` int(3) NOT NULL DEFAULT '0' COMMENT '排序号',
  `created` datetime DEFAULT NULL COMMENT '创建时间',
  `updated` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`group_id`),
  UNIQUE KEY `group_name` (`group_name`),
  KEY `group_id` (`group_id`)
) ENGINE=InnoDB AUTO_INCREMENT=90 DEFAULT CHARSET=utf8mb4;

CREATE TABLE `process_instances` (
  `instance_id` varchar(40) NOT NULL COMMENT '审批实例ID',
  `title` varchar(255) DEFAULT NULL COMMENT '标题',
  `commit_user` varchar(50) DEFAULT NULL COMMENT '发起人ID',
  `forms` text COMMENT '表单内容',
  `status` varchar(10) DEFAULT NULL COMMENT '流程状态',
  `result` varchar(10) DEFAULT NULL COMMENT '流程结果',
  `instance_nodes` text COMMENT '流程审批链',
  `created` datetime DEFAULT NULL,
  `updated` datetime DEFAULT NULL,
  PRIMARY KEY (`instance_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `process_templates` (
  `template_id` varchar(50) NOT NULL DEFAULT '' COMMENT '审批摸板ID',
  `template_name` varchar(125) DEFAULT NULL COMMENT '摸板名称',
  `form_items` text COMMENT '摸板表单',
  `process` text COMMENT '流程数据',
  `icon` varchar(50) DEFAULT '' COMMENT '图标',
  `background` varchar(50) DEFAULT NULL COMMENT '图标背景色',
  `notify` varchar(255) DEFAULT NULL COMMENT '通知',
  `who_commit` varchar(1024) DEFAULT NULL COMMENT '谁能提交',
  `who_edit` varchar(1024) DEFAULT NULL COMMENT '谁能编辑',
  `who_export` varchar(1024) DEFAULT NULL COMMENT '谁能导出数据',
  `is_stop` bit(1) DEFAULT b'0' COMMENT '是否已停用',
  `remark` varchar(255) DEFAULT NULL COMMENT '备注',
  `created` datetime DEFAULT NULL COMMENT '创建时间',
  `updated` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`template_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

CREATE TABLE `template_group` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `template_id` varchar(50) NOT NULL,
  `group_id` int(11) NOT NULL,
  `sort_num` int(11) DEFAULT NULL,
  `created` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `template_id` (`template_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=167 DEFAULT CHARSET=utf8mb4;


CREATE TABLE `users` (
  `user_id` int(11) NOT NULL COMMENT '用户id',
  `user_name` varchar(255) NOT NULL COMMENT '用户名',
  `pingyin` varchar(50) DEFAULT NULL COMMENT '拼音  全拼及首字母缩写',
  `alisa` varchar(255) DEFAULT NULL COMMENT '昵称',
  `avatar` varchar(255) DEFAULT NULL COMMENT '头像',
  `sex` bit(1) DEFAULT b'1' COMMENT '性别',
  `department_ids` varchar(255) NOT NULL COMMENT '部门id,分隔',
  `entry_date` date DEFAULT NULL COMMENT '入职日期',
  `leave_date` date DEFAULT NULL COMMENT '离职日期',
  `admin` int(2) DEFAULT '2' COMMENT '管理级别 0=主管理员 1=子管理员 2=普通员工',
  `created` datetime DEFAULT NULL COMMENT '创建时间',
  `updated` datetime DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
  PRIMARY KEY (`user_id`),
  KEY `user_id` (`user_id`),
  KEY `department_ids` (`department_ids`),
  KEY `leave_date` (`leave_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;

对应demo
前端:https://github.com/willianfu/workflow-client
后端:https://github.com/willianfu/workflow-server

协程调度

决定到底让 CPU 执行哪个协程的代码决断过程就是协程调度,调度的策略是什么?

首先,在执行某个协程代码的过程中发现这行代码遇到了 Co::sleep() 或者产生了网络 IO,例如 MySQL->query(),这肯定是一个耗时的过程,Swoole 就会把这个 Mysql 连接的 Fd 放到 EventLoop 中。

  • 然后让出这个协程的 CPU 给其他协程使用:即 yield(挂起)
  • 等待 MySQL 数据返回后就继续执行这个协程:即 resume(恢复)

其次,如果协程的代码有 CPU 密集型代码,可以开启 enable_preemptive_schedulerSwoole 会强行让这个协程让出 CPU

摘自:https://wiki.swoole.com/#/coroutine?id=协程调度

应用场景

在使用php的过程中,我们常常需要去添加一些PHP扩展库。但是重新对php进行编译是比较蛮烦的,所以这时候我们可以使用phpizephp进行添加扩展。并且phpize编译的扩展库可以随时启用或停用,比较灵活。

使用方法

extention为要挂载的扩展包

1.wget extension.tar.gz下载相应的扩展包并解压。
2.cd extension/切换到扩展extension的目录中
3./php/bin/phpize 运行php安装目录下的phpize文件,这时候会在extension目录下生成相应的configure文件。
4./configure --with-php-config=/php/bin/php-config 运行配置,如果你的服务器上只是装了一个版本的php则不需要添加--with-php-config
。后面的参数只是为了告诉phpize要建立基于哪个版本的扩展。
5.make && make install 编译模块编译好模块之后,需要让php启用它。在php.ini文件中加入把extension.so开启即可。重启php服务。

作用

其实phpize是一个运行脚本,主要作用是检测php的环境还有就是在特定的目录生成相应的configure文件,这样make install之后,生成的.so文件才会自动加载到php扩展目录下面。

转自:https://www.cnblogs.com/houss/p/11341280.html