乐趣区

关于php:JkdYaf-基于-YAF-SWOOLE-高性能API框架

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

退出移动版