Home >PHP Framework >Swoole >How swoole works

How swoole works

(*-*)浩
(*-*)浩Original
2019-12-09 09:22:462594browse

How swoole works

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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn