
Introduction
What is Swoft?
Swoft is a PHP high performance microservice coroutine framework. It has been published for many years and has become the best choice for php. It can be like Go, built-in coroutine web server and common coroutine client and is resident in memory, independent of traditional PHP-FPM. There are similar Go language operations, similar to the Spring Cloud framework flexible annotations.
Through three years of accumulation and direction exploration, Swoft has made Swoft the Spring Cloud in the PHP world, which is the best choice for PHP's high-performance framework and microservices management.
About tutorial
I write article by learn Swoft ,it can help someone to easy to learn swoft
Github
If you have some problems, you can submit issue by github.
https://github.com/swoft-cloud/swoft
Discuss
You can discuss problem in here.
Tutorial
Requirements
- Centos7+
- PHP Composer
- Docker-ce
- Docker-compose
Install Requirements
Docker-ce on centos
udo yum install -y yum-utils \device-mapper-persistent-data \lvm2 sudo yum-config-manager \--add-repo \https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo sudo yum makecache fast sudo yum install docker-ce sudo systemctl enable docker sudo systemctl start docker sudo usermod -aG docker $USER newgrp - docker sudo systemctl restart docker
Docker-compose
su root curl -L https://get.daocloud.io/docker/compose/releases/download/1.22.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose
PHP
su root rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm yum -y install php71w-fpm
Composer
su root curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer
Usage
Create project:
composer create-project swoft/swoft Swoft
Project struct:
├── app/ ----- root directory │ ├── Annotation/ ----- annotation │ ├── Aspect/ ----- aop │ ├── Common/ ----- common util │ ├── Console/ ----- command │ ├── Exception/ ----- exception │ │ └── Handler/ ----- exception handler │ ├── Http/ ----- HTTP Demo │ │ ├── Controller/ │ │ └── Middleware/ │ ├── Helper/ ----- helper │ ├── Listener/ ----- listener │ ├── Model/ │ │ ├── Dao/ │ │ ├── Data/ │ │ ├── Logic/ │ │ └── Entity/ │ ├── Rpc/ ----- RPC Demo │ │ └── Service/ │ │ └── Middleware/ │ ├── WebSocket/ ----- WebSocket Demo │ │ ├── Chat/ │ │ ├── Middleware/ │ │ └── ChatModule.php │ ├── Tcp/ ----- TCP Demo │ │ └── Controller/ │ ├── Application.php ----- Application │ ├── AutoLoader.php ----- Autoloader │ └── bean.php ├── bin/ │ ├── bootstrap.php │ └── swoft ----- entry file ├── config/ ----- config directory │ ├── base.php │ └── db.php ├── public/ ----- public directory ├── resource/ ----- resource directory │ ├── language/ │ └── view/ ├── runtime/ ----- runtime directory ├── test/ ----- unit directory │ └── bootstrap.php ├── composer.json ├── phar.build.inc └── phpunit.xml.dist ├── .env ----- env config ├── docker-compose.yml └── phpunit.xml.dist
Upate docker-compose.yaml:
version: "3" services: redis: image: redis:alpine container_name: redis ports: - 6379:6379 volumes: - redisdb:/data - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime swoft: image: swoft/swoft # for local develop command: php -S 127.0.0.1:13300 container_name: swoft-test environment: - APP_ENV=dev - TIMEZONE=Asia/Shanghai ports: - "18306:18306" - "18307:18307" - "18308:18308" volumes: - ./:/var/www/swoft mysql: image: mysql container_name: mysql-srv environment: - MYSQL_ROOT_PASSWORD=123456 ports: - "3306:3306" volumes: - mysqldb:/var/lib/mysql volumes: redisdb: mysqldb:
Start swoft by Docker compose:
docker-compose up -d
You click http://127.0.0.1:18306, will see the following page.

Github
If you have some problems, you can submit issue by github.
https://github.com/swoft-cloud/swoft
Discuss
You can discuss problem in here.