JkdYaf - 基於 YAF + SWOOLE 高效能API框架

JKDCRY發表於2021-03-18

基於 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地址: github.com/crytjy/JkdYaf
gitee地址: gitee.com/jkdcry/JkdYaf

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章