Single-threaded mode (SWOOLE_BASE)
This mode is the traditional asynchronous non-blocking Server. It is completely consistent with programs such as Nginx and Node.js. (Recommended learning: swoole video tutorial )
Directly call back the PHP function in the time loop instead of dispatching the delivery task. If there are blocking operations in the callback function, the server will degenerate into synchronous mode. The worker_num parameter is still valid in BASE mode and multiple Worker processes will be started.
There is no role of Master process in BASE mode
Each Worker process also assumes the responsibilities of the Reactor thread and Worker process in Process mode
The Manager process is optional in BASE mode. When worker_num=1 is set and the Task and MaxRequest features are not used, the bottom layer will directly create a separate Worker process and not create a Manager process
BASE Advantages of the mode:
BASE mode has no IPC overhead and better performance
BASE mode code is simpler and less error-prone
Disadvantages of BASE mode :
TCP connections are maintained in the Worker process, so when a Worker process hangs up, all connections in this Worker will be closed
A small number of long TCP connections Unable to utilize all Worker processes
TCP connections are bound to Workers. Some connections in long-term connection applications have a large amount of data, and the load of the Worker processes where these connections are located will be very high. However, the data volume of some connections is small, so the load on the Worker process will be very low, and different Worker processes cannot achieve balance.
Applicable scenarios of BASE mode:
If there is no need for interaction between client connections, BASE mode can be used. Such as Memcache, HTTP server, etc.
Process mode (SWOOLE_PROCESS)
Multi-process mode is the most complex method, using a large number of inter-process communication and process management mechanisms. Suitable for scenarios with very complex business logic. Swoole provides complete process management and memory protection mechanisms. Even when the business logic is very complex, it can run stably for a long time.
Swoole provides the Buffer function in the Reactor thread, which can deal with a large number of slow connections and byte-by-byte malicious clients. In addition, CPU affinity setting options are provided to make the program run more efficiently.
Advantages of process mode:
Connection and data request sending are separated, and the Worker process will not be caused by the large amount of data in some connections and the small amount of data in some connections. Unbalanced
When the Worker process sends a fatal error, the connection will not be cut off
Single connection concurrency can be achieved, only a small number of TCP connections are maintained, and requests can be processed concurrently in multiple Worker processes
Disadvantages of process mode:
There is the overhead of 2 IPCs. The master process and the worker process need to use UnixSocket to communicate.
Does not support some Advanced functions, such as sendwait, pause, resume and other operations
The above is the detailed content of How swoole works. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment

SublimeText3 Chinese version
Chinese version, very easy to use
