Home >PHP Framework >Swoole >The difference between swoole and rpc in php

The difference between swoole and rpc in php

(*-*)浩
(*-*)浩Original
2019-12-14 14:17:012496browse

The difference between swoole and rpc in php

#RPC is the abbreviation of Remote Procedure Call.

The principle of RPC calling in the SAP system is actually very simple. There are some C/S systems similar to the three-tier architecture. The third-party client program calls the internal standard or custom functions of SAP through the interface to obtain The data returned by the function is processed and then displayed or printed. (Recommended learning: SWOOLE Video Tutorial )

## ((((IPC) is a communication technology used by procedures and processes for multi -tasking operating systems or networking computers. There are two types of inter-process communication (IPC).

Local Procedure Call (LPC) LPC is used in multi-tasking operating systems to enable tasks running simultaneously to talk to each other. These tasks share memory space allowing tasks to synchronize and send information to each other.

Remote Procedure Call (RPC) RPC is similar to LPC, but works online. RPC began to appear in computers running the UNIX operating system from Sun Microsystems and HP.

The RPC server provided by the Swoole framework supports features such as single connection concurrency and long connection maintenance under PHP-FPM. In the large-scale application of Wheel Internet, a service-oriented architecture of 4-layer architecture has been constructed.

Many companies use Http Rest to implement RPC communication. The implementation is simple and can take advantage of many ready-made tools and solutions. However, the HTTP communication protocol has two serious flaws.

Http does not support single connection concurrency. If you want to concurrently send many requests at the same time, you must create a large number of TCP connections. If php-fpm starts 500 processes and requires 128 concurrency each time, then 64,000 TCP connections need to be created.

Http does not support long connections well enough. Many Http programs are designed for short connections. A TCP connection is created when a request is made and closed when the request ends. This will bring additional network communication consumption

The RPC client of the Swoole framework uses a 16-byte fixed header and body communication method, supports single connection concurrency, and supports opening long connections in php-fpm.

php-fpm long connection

Maintaining TCP long connection in php-fpm mainly relies on the SWOOLE_KEEP option provided by the swoole extension. After the client sets this option , the connection will not be closed when the request ends, and the TCP connection can be reused after new requests arrive. In addition, the bottom layer has built-in long connection detection capability.

When executing $client->connect(), it automatically detects whether the connection is available. If the reused connection has expired, the bottom layer will re-create a new TCP long connection.

Automatically clean up junk data when executing $client->connect() to avoid service exceptions caused by residual data from the last client timeout

$socket = new \swoole_client(SWOOLE_SOCK_TCP | SWOOLE_KEEP, WOOLE_SOCK_SYNC);
$socket->set(array(
    'open_length_check' => true,
    'package_max_length' => $this->packet_maxlen,
    'package_length_type' => 'N',
    'package_body_offset' => RPCServer::HEADER_SIZE,
    'package_length_offset' => 0,
));

The above is the detailed content of The difference between swoole and rpc in php. 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