/swoft

⚡️ Modern High performance AOP and Coroutine PHP Framework, base on Swoole

Primary LanguagePHPApache License 2.0Apache-2.0

    swoft

Latest Version Build Status Php Version Swoole Version Hiredis Version Swoft Doc Swoft License

中文说明

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 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

Document

Chinese Document
English Document Not yet, please help us write it.

QQ Group: 548173319/778656850

Environmental Requirements

  1. PHP 7.0 +
  2. Swoole 2.1.3 +, coroutine and async redis client options are required
  3. Hiredis
  4. Composer

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 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

Changelog

License

Swoft is an open-source software licensed under the LICENSE