Home >PHP Framework >Swoole >How does swoole work?

How does swoole work?

尚
Original
2019-12-12 15:53:573120browse

How does swoole work?

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!

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
Previous article:Is swoole a framework?Next article:Is swoole a framework?