Introduction
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 Coroutine Server
Powerful 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
Holistic service governance, fallback, load balance, service registration and discovery
Database ORM
Universal connection pools
Mysql, Redis, RPC, HTTP Coroutine Clients
Coroutine driver client and blocking driver client seamlessly switch automatically
Coroutine and asynchronous task delivery
Custom user processes
RESTful supported
Internationalization (i18n) supported
High performance router
Fast and flexible parameter validator
Alias mechanism
Powerful log component
Cross-platform application auto-reload mechanism
Document
Chinese Document
English Document Not yet, please help us to complete it.
QQ Group1: 548173319
QQ Group2: 778656850
Environmental Requirements
PHP 7.0 +
Swoole 2.1.3 + ( >= 4.1 is better), coroutine and async redis client options are required
Install
Manual Installation
Clone project
Install requires composer install
Install by Composer
composer create-project swoft/swoft swoft
Install by Docker
docker run -p 80:80 swoft/swoft
Install by Docker-Compose
cd swoft
docker-compose up
Configuration
If automatically copied .env file operation 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
Management
Help command
[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
// 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
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 RPC Server
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
Changelog
License
Swoft is an open-source software licensed under the LICENSE