The first high-performance PHP coroutine full-stack componentization framework based on Swoole native coroutine, built-in coroutine web server and commonly-used coroutine client, resident memory, which has no dependency on PHP-FPM, asynchronous non-blocking IO implementation, similar to synchronous client style of writing to achieve the use of asynchronous clients, without complex asynchronous callback, no tedious yield, similar Go language coroutines, flexible annotations framework, a powerful global dependency injection container base on annotations, and great service governance , flexible and powerful AOP, PSR specification implementation, etc., could be used to build high-performance Web systems, APIs, middleware, basic services, microservice and so on.
- Base on Swoole extension
- Built-in HTTP, TCP, WebSocket Server
- Poweful AOP (Aspect Oriented Programming)
- Flexible and comprehensive annotations framework
- Global dependency injection container
- PSR-7 based HTTP message implementation
- PSR-14 based event manager
- PSR-15 based middleware
- PSR-16 based cache design
- Scalable high performance RPC
- Great service governance, fallback, load balance, service registration and discovery
- Database ORM
- Universal connection pool
- Mysql, Redis, RPC, HTTP Coroutine Clients
- Coroutine driver client and blocking driver client seamlessly switch automatically
- Coroutine and asynchronous task delivery
- Custom user process
- RESTful support
- Internationalization (i18n) support
- High performance router
- Fast and flexible parameter validator
- Alias mechanism
- Powerful log component
- Cross-platform application auto-reload
Chinese Document
English Document Not yet, please help us write it.
QQ Group1: 548173319(Full)
QQ Group2: 778656850
- PHP 7.0 +
- Swoole 2.1.3 +, coroutine and async redis client options are required
- Hiredis
- Composer
- Clone project
- Install requires
composer install
composer create-project swoft/swoft swoft
docker run -p 80:80 swoft/swoft
cd swoft
docker-compose up
If automatically copied .env
file fails when composer install
was executed, the .env.example
that in root directory can be manually copied and named .env
. Note that composer update
will not trigger related copy operations.
# Server
PFILE=/tmp/swoft.pid
PNAME=php-swoft
TCPABLE=true
CRONABLE=false
AUTO_RELOAD=true
# HTTP
HTTP_HOST=0.0.0.0
HTTP_PORT=80
# WebSocket
WS_ENABLE_HTTP=true
# TCP
TCP_HOST=0.0.0.0
TCP_PORT=8099
TCP_PACKAGE_MAX_LENGTH=2048
TCP_OPEN_EOF_CHECK=false
# Crontab
CRONTAB_TASK_COUNT=1024
CRONTAB_TASK_QUEUE=2048
# Settings
WORKER_NUM=1
MAX_REQUEST=10000
DAEMONIZE=0
DISPATCH_MODE=2
LOG_FILE=@runtime/swoole.log
TASK_WORKER_NUM=1
[root@swoft]# php bin/swoft -h
____ __ _
/ ___|_ _____ / _| |_
\___ \ \ /\ / / _ \| |_| __|
___) \ V V / (_) | _| |_
|____/ \_/\_/ \___/|_| \__|
Usage:
php bin/swoft {command} [arguments ...] [options ...]
Commands:
entity The group command list of database entity
gen Generate some common application template classes
rpc The group command list of rpc server
server The group command list of http-server
ws There some commands for manage the webSocket server
Options:
-v, --version show version
-h, --help show help
// Start HTTP Server
php bin/swoft start
// Start Daemonize HTTP Server
php bin/swoft start -d
// Restart HTTP server
php bin/swoft restart
// Reload HTTP server
php bin/swoft reload
// Stop HTTP server
php bin/swoft stop
Start WebSocket Server, optional whether to support HTTP processing.
// Star WebSocket Server
php bin/swoft ws:start
// Start Daemonize WebSocket Server
php bin/swoft ws:start -d
// Restart WebSocket server
php bin/swoft ws:restart
// Reload WebSocket server
php bin/swoft ws:reload
// Stop WebSocket server
php bin/swoft ws:stop
Start an independent RPC Server.
// Start RPC Server
php bin/swoft rpc:start
// Start Daemonize RPC Server
php bin/swoft rpc:start -d
// Restart RPC Server
php bin/swoft rpc:restart
// Reload RPC Server
php bin/swoft rpc:reload
// Stop RPC Server
php bin/swoft rpc:stop
Swoft is an open-source software licensed under the LICENSE