Home > Article > PHP Framework > What is the difference between workerman and swoole
Difference: 1. swoole is a socket communication framework implemented in C language, while workerman is a socket framework implemented in pure PHP; 2. In workerman, the socket is handled by the worker process, while swoole is handled by the main process. The reactor thread in it is responsible.
The operating environment of this tutorial: Windows10 system, Swoole4 version, DELL G3 computer
Workerman and swoole are very controversial at this stage. You have to get to know each other when you have time, otherwise you are not in the PHP circle. Swoole is a socket communication framework implemented in C language, while Workerman is a socket communication framework implemented in pure PHP. There are also many differences in the process models between the two.
master process
This process is more complex, and it is also the core process in my opinion. This is a process that contains multiple threads, including one main thread and n reactor threads (number configurable).
Among them, the main thread is used to accept new connections, then evaluate the number of connections each reactor thread is responsible for maintaining, and then assign them to the reactor thread with the smallest number to maximize the load of each reactor thread. is balanced.
Essentially, once a socket is readable or writable, it is sent by the reactor thread to the worker process or to the client. In addition, the main thread is also responsible for taking over all signals to avoid interruption when the reactor thread receives signals.
To put it more Westernly, the master process is responsible for the accept and hosting of the connection, and the readability and writability of the socket (the sending and receiving of data). In essence, the master process is responsible for IO. It should also be noted that the reactor thread is a completely asynchronous and non-blocking working method.
manager process
The manager process is the mother of the worker process and the taskworker process. To put it in a more fashionable way, the manager process forks the worker process and the taskworker process and gives birth to them. It must be managed, so the manager process must be responsible for the maintenance obligations of the worker process and taskworker process, including monitoring their status, re-starting a new process when they hang up unexpectedly (avoiding zombie processes), and smooth restarting. (This is the legendary reload).
worker process
The worker process is forked by the manager process. To put it bluntly, this process is just a job (business code mentioned many times in official documents). In fact, it is the curd business logic code that is usually coded, do you understand? But what's more interesting about the worker process is that this process can work asynchronously or synchronously. If you don’t understand what it means, just memorize it first and become familiar with it before talking about it.
taskworker process
The taskworker process (hereinafter referred to as the tasker process) is actually essentially a worker process, but a special worker process. If there are some time-consuming and labor-intensive operations in your worker process, you can first throw them to the tasker process and do other things yourself. When the tasker is finished, the worker process will retrieve them. This is very convenient. However, the tasker process can only work in synchronous mode and cannot use asynchronous mode. This is why the tasker process cannot use timers, but the worker process can use timers.
Let’s briefly summarize and talk about how these processes work together. To put it bluntly, the master process is responsible for taking sales jobs, but the specific work is done by the worker process. If the worker process feels that some processes are too busy and complicated, it can let the tasker process do it. The manager process is the human resources support department of the logistics worker process and taker process, responsible for their life and death and eating, drinking and sleeping.
workerman
The process model of workerman is relatively simple. First of all, compared to swoole, workerman does not have the reactor thread in swoole. Secondly, workerman is useless. Worker processes and tasker processes used to handle ordinary business. In the case of workerman, the socket is handled by the worker process, while in swoole it is handled by the reactor thread in the main process. After receiving the data, swoole can process the business through its own worker process (somewhat similar to the fpm process).
workerman is a high-performance PHP socket server framework. Workerman is based on PHP multi-process and libevent event polling library. PHP developers can develop their own network applications as long as they implement one or two interfaces, such as Rpc Services, chat room servers, mobile game servers, etc.
Workerman's goal is to make it easier for PHP developers to develop high-performance socket-based application services without having to understand the details of PHP sockets and PHP multi-processes. Workerman itself is a PHP multi-process server framework with PHP process management and socket communication modules, so it can run independently without relying on php-fpm, nginx or apache and other containers.
Recommended learning: swoole Tutorial
The above is the detailed content of What is the difference between workerman and swoole. For more information, please follow other related articles on the PHP Chinese website!