sw-fw-less
Description
Swoole http server without framework
Features
- Faster Router
- Router & Global Middleware
- Model(MySQL & EleasticsearchćJson SerializablećArray Accessable)
- Query Builder(MySQL & Elasticsearch)
- Connection Pool(MySQLćRedisćExperimental AMQP-0-9-1ćExperimental HBase)
- Storage(FilećQiniućAlioss)
- Full Coroutine
- Log(Based on Monolog)
- Distributed Lock(Based on Redis)
- Parameter Validator
- Monitor
- AMQP-0-9-1
- Zipkin Trace
- Dynamic Fault Injection
- Hot Reload(including biz codećconfigćrouter, recommended for dev only)
- Experimental Grpc(must open http2)
- Apollo Config Center
Notice
- Don't include io operation in controller or middleware constructor
- Don't open preemptive scheduler
Composer Package Review Suggestion
- Namespace conflicts
- Duplication of functions without namespace
Requirements
- Composer 1.x
- PHP 7.1+
- Swoole 4.2.10+
Installation
composer create-project luoxiaojun/sw-fw-less-app=dev-master sw-fw-less --prefer-dist -vvv
Deployment
Nginx
Nginx Config Demo(Modify according to your requirements)
server {
listen 80;
## Modify according to your requirements
server_name www.sw-fw-less.dev;
location / {
## Modify according to your requirements
proxy_pass http://127.0.0.1:9501;
}
}
Docker
docker run -d -P luoxiaojun1992/sw-fw-less:latest
Usage
Start Server
php start.php
Demo Api
curl -i 'http://127.0.0.1:9501/ping'
Grpc Generator
cd tools && ./generate_grpc.sh path/to/grpc/bins/opt/grpc_php_plugin
Performance
Environment:
- OS: MacOS 10.14.1
- CPU: 2.3 GHz Intel Core i5 4 Cores
- Memory: 16 GB 2133 MHz LPDDR3
- Swoole: 4.2.9
- PHP: 7.2.8
- Redis: 4.0.11
- API: http://127.0.0.1:9501/redis?key=key
- Concurrent: 300
- Tool: JMeter 4.0 r1823414
Document
Please see document.
Roadmap
- Add helper functions namespace