zhamao-framework/README.md
2019-01-31 23:19:53 +08:00

127 lines
4.7 KiB
Markdown
Executable File
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.

# CQBot-swoole
[![作者QQ](https://img.shields.io/badge/作者QQ-627577391-orange.svg)]()
[![license](https://img.shields.io/badge/license-MIT-blue.svg)]()
A fast and multi-task framework for Coolq-HTTP-API
一个异步、高性能的[CQ-HTTP-API插件](https://cqhttp.cc/)协程PHP框架。
## 什么是Swoole
Swoole是一个C编写的、高性能的PHP扩展。支持多线程、多进程、同步、异步、协程、SQL等。
众所周知PHP原生对多线程、多进程、异步等特性支持不是很好但有了Swoole你可以非常简单自由地写出优雅的高性能服务器。
框架使用Swoole Websocket Server为基础借助PHP语言便捷的优势同时风格和go语言协程相似易于上手。
本项目原生支持多机器人连接故选择了反向Websocket连接方式。同时更适用于高并发、多机器人同时连接以及对接**微信公众号**和**web前端**等场景。
[Swoole官网](https://www.swoole.com/)
## CQBot-swoole 文档
本项目的文档正在努力编写中:[https://cqbot.crazywhale.org/](https://cqbot.crazywhale.org/)
## 框架简介
本机器人框架是基于PHP Swoole框架而写的一个CQ-HTTP-API SDK具有高性能、高并发和多机器人连接的特性。框架本身常驻内存以及协程运行的特性解决了读写文件、读写数据库等造成的性能问题。
框架自身作为一个高性能的Swoole **WebSocket**兼容HTTP服务器可以同时完成更多websocket和HTTP环境的业务逻辑。此外还保留了微信公众号接口未来可以与微信公众号开发者平台对接。
## 环境部署
由于框架是独立于酷Q和HTTPAPI插件运行的故你可以在多台主机上部署酷Q的docker。
如果你是新用户或重新安装含有HTTPAPI插件的**酷Q-Docker**的话可以在你需要部署酷Q的Linux主机下使用下面的脚本快速构建酷Q环境此脚本会引导进行相关的cqhttp插件设置。每台部署酷Q的主机均可直接使用下方的命令服务器需要提前安装Docker
```shell
#第一次部署酷Q-httpapi docker运行下面的代码
sh -c "$(wget https://raw.githubusercontent.com/crazywhalecc/CQBot-swoole/master/start-coolq.sh -O -)"
#以后每次启动/停止/重启酷Q容器执行的命令
docker start coolq
docker stop coolq
docker restart coolq
#以上指令非root用户可能需要sudo
```
## 框架部署
### 手动安装到Linux主机上
``` shell
# 安装PHPubuntu/debian
apt-get install software-properties-common
add-apt-repository ppa:ondrej/php
apt-get update
apt-get install php7.2 php7.2-dev php7.2 php7.2-mbstring php7.2-json php7.2 php-pear
#安装PHPCentOS
rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
yum makecache fast
yum install php72w-devel.x86_64 php72w-mbstring.x86_64 php72w-pear.noarch gcc gcc-c++ -y
# 安装Swoole
pecl install swoole
echo "extension=swoole.so" >> $(php -i | grep "Loaded Configuration File" | awk '{print $5}')
# 部署框架
git clone https://github.com/crazywhalecc/CQBot-swoole.git
# 以上指令可能需要sudo执行
```
### 使用Docker快速构建并启动
``` shell
sudo docker run -it --rm --net=host --name cqbot -v $(pwd)/cqbot/:/root/ jesse2061/cqbot-swoole
```
## 启动
#### 直接安装后启动框架
```shell
cd CQBot-swoole/
php start.php
```
#### 在screen中运行框架
```shell
screen -R cqbot
cd CQBot-swoole/
php start.php
# Ctrl A + D 将screen放到后台运行
```
#### 使用Docker在screen中运行框架
```shell
screen -R cqbot
sudo docker run -it --rm --net=host --name cqbot -v $(pwd)/cqbot/:/root/ jesse2061/cqbot-swoole
# Ctrl A + D 将screen放到后台运行
```
## MacOS与Windows兼容性
#### MacOS下运行CQBot-swoole
mac下运行和Linux整体相同使用brew安装好PHP后通过源码编译`swoole`组件安装或使用docker。
> Docker for mac 运行需要手动指定端口`-p 20000:20000`,不能使用`--net=host`网络模式。
#### Windows下运行CQBot-swoole
因为swoole使用了Linux的特性故**不推荐**在Windows电脑或服务器使用Windows可以使用Docker运行或使用`cygwin`环境。
> 不推荐原因有不能使用`reload`指令进行重启服务和不能使用全部的swoole特性。
## 关于
框架和SDK部分代码直接从**炸毛机器人**中移植而来炸毛机器人3290004669是作者写的一个高性能的机器人曾获全国计算机设计大赛一等奖。
欢迎随时在HTTP-API插件群提问当然更好的话可以加作者QQ627577391或提交issue进行疑难解答。
本项目在有更新内容时请及时关注GitHub的动态更新前请将自己的模块代码做好备份。