Introduction to the two operating modes of swoole:
Single-threaded mode (SWOOLE_BASE)
This mode is Traditional asynchronous non-blocking Server. It is completely consistent with programs such as Nginx and Node.js.
Call back the PHP function directly 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 in BASE mode is Optional, 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 without creating a Manager process
Advantages of BASE mode:
BASE mode has no IPC overhead and has 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 cannot be used by all Worker processes
TCP connections are bound to Workers Certain connections in long-connect applications have a large amount of data, and the load of the Worker process 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.
Recommended learning: swoole video tutorial
Process mode (SWOOLE_PROCESS)
Multi-process mode is the most complex The method uses a lot 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 unbalanced because some connections have large amounts of data and some have small amounts of data.
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 does swoole work?. For more information, please follow other related articles on the PHP Chinese website!