JKDYAF
基于 YAF + SWOOLE 高性能 APi 框架
我的项目架构
- Linux + Nginx + PHP7 + Mysql + Swoole + Redis + Yaf + Yac
必须
- php 7.x
- mysql
- yaf
- yac
- swoole 5.4.x
- redis
为什么要写这个我的项目?
我最开始用 laravel 写接口,但家喻户晓 laravel 框架是一个十分重的,性能更是没得说。必定有人会问,既然谋求性能,为什么不必当初很火的 Golang 来写,性能杠杠的。其实我最开始也是想用 Golang 来写的,然而自己对 Golang 并不相熟,工夫老本太高。之所以抉择 YAF,无可非议就是因为快,简略。并且作为鸟哥的头等粉丝,必定会抉择 YAF。最开始我也是寻找网上的开源我的项目,但并没有找到一个是我称心的。不是没有用上 swoole, 就是不反对多模块,都有的就是封装了太多货色。
配置
1. 批改 php.ini 配置
extension=yaf.so
[yaf]
yaf.environ=product
yaf.cache_config=1
yaf.use_namespace=1
yaf.library="/path/JkdYafLibrary/" // 全局类库的目录门路
extension=yac.so
[yac]
; 是否开启 yac,1 示意开启,0 示意敞开
yac.enable=1
;4M 能够失去 32768 个 key,32M 能够失去 262144 个 key
yac.keys_memory_size=4M
; 申请的最大 value 内存
yac.values_memory_size = 64M
; 是否压缩数据 ss
yac.compress_threshold = '-1'
; 敞开在 cli 下应用 yac
yac.enable_cli = 1
2. 我的项目 app.ini, 批改数据库 mysql 与 redis 的配置
# 数据库配置 mysql
[db]
db.host = "x.x.x.x"
db.port = xxxx
db.dbname = "xx"
db.username = "xx"
db.password = "xxx"
db.charset = "utf8mb4"
#redis 配置
[redis]
redis.host = "x.x.x.x"
redis.port = xxx
redis.password = null
3. 我的项目批改 jkdyaf.ini 配置
ip = "0.0.0.0"
port = 9501
启动
php bin/JkdYaf.php
php bin/JkdYaf.php -d // 守护过程
nginx 配置
server {
listen xx; // 端口
server_name x.x.x.x; //IP 或者域名
index index.html index.htm index.php; root /path/JkdYaf/public/; // 我的项目门路
location = /favicon.ico {
return 404; expires 30d;
log_not_found off; access_log off;
}
location / {if (!-e $request_filename){proxy_pass http://127.0.0.1:9501; // 必须与我的项目 conf 下的 JkdYaf.ini 对应}
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ {expires 30d;}
location ~ .*\.(js|css)?$ {expires 1h;}
}
后续将会持续增加罕用性能
- mysql 连接池
- redis 连接池
- 定时工作
- yaconf
- yar
- 队列
github 地址:https://github.com/crytjy/JkdYaf
gitee 地址:https://gitee.com/jkdcry/JkdYaf