Transfon, 2020. — 338 p., converted from EPUB
Introducing a new execution model of PHP applications, how Swoole PHP works and the pitfalls of new developers coming into the Swoole PHP world. This book is also about the general concepts behind building a high concurrency and high-performance web system and how these concepts are implemented in Swoole PHP and how advanced PHP works.
This book provides just enough Linux OS kernel knowledges with code samples helping you understand how async I/O, concurrency and coroutine works.
When start learning or using a new framework, people always carry some assumption coming from the previous experience. Some of these experiences are helpful to understand the new system, but some of these experiences may lead to the misunderstanding of the new system. This book introduces the pitfalls to avoid if you are an experienced PHP developer.
This book is for the developers who have already know the basics about how a web system works such as PHP web application or application in the other programming languages such as Node.js, Golang or Java.
After reading this book, you should be able to build a high concurrent Swoole PHP system with confidence.
- Stateless PHP-FPM
- Performance problem
- Concurrency problem
- PHP CLI
General concepts
- Executor and execution containers
- Lifecycle
- Decoupling and layers
- Queue, Buffer, Buffering and Batching
- Pipe and Channel
- Context, stack and context switch
- Singleplex vs multiplexing
- Asynchronous
- State, stateless, stateful and pooling
- File descriptor, I/O stream
- Exceptions
- Protocol
- Concurrency and I/O model
- Event driven and callbacks
- Facts, costs and limitation
- Rate limiting & Concurrency Limiting
The practical world on Linux OS
- User mode and kernel mode
- Memory management
- Process, Thread and Coroutine
- Socket and Networking I/O
- Blocking IO and Non-blocking IO
- Callbacks, await async vs coroutines
Connect with protocols
- TCP/UDP Protocol
- HTTP Protocol
- Websocket Protocol
- HTTP2 Protocol and GRPC
- Custom protocol
Swoole runtime and internal
- Swoole PHP extension
- Variable and states
- Event loop and asynchronous I/O
- Swoole PHP Coroutine
- Multiple execution modes
Hands on Swoole PHP
- Swoole Server
- Swoole Server Workers
- Swoole Process
- Swoole Clients
- Swoole Table
- Swoole Timer
- Swoole Coroutine and Channel
Use cases and patterns
- HTTP services
- Data processing
- HTTP and PHP-FPM proxy
- Sidecar process
- TCP service
- WebSocket Server
- Task Scheduler
- Producer and Consumer
- M:N concurrency mapping
- Connection polling
- Web spider and scraper
- PUBSUB system
- Server-sent events (SSE)
- Integrate with Linux process
- Service Governance: RPC and gRPC
- Rate limiting
- Design custom TCP protocols
- Monitoring and reporting
Hosting and deployment
- Docker and Kubernetes
- Running on the AWS EC2 or bare metal