Heim >PHP-Framework >Swoole >Was verwendet Swoole, um FD zu speichern?

Was verwendet Swoole, um FD zu speichern?

(*-*)浩
(*-*)浩Original
2019-12-09 11:21:132865Durchsuche

Was verwendet Swoole, um FD zu speichern?

from_id ist der Reaktor-Thread, von dem es stammt

fd ist der Dateideskriptor der TCP-Verbindung, der die eindeutige Kennung des Clients in swoole_server ist Empfohlenes Lernen: Swoole-Video-Tutorial )

fd wird wiederverwendet. Wenn die Verbindung geschlossen wird, wird fd von der neuen eingehenden Verbindung wiederverwendet

Die TCP-Verbindung fd wird beibehalten. Wird nicht wiederverwendet.

Der Aufruf der Funktion swoole_server->send/swoole_server->close erfordert die Übergabe des Parameters $fd, um korrekt verarbeitet zu werden.

Wenn Sie in Ihrem Unternehmen Broadcasts senden müssen, müssen Sie apc/redis/memcache/swoole_table verwenden, um den Wert von fd zu speichern.

Versionen 1.6.0 und höher erfordern nicht mehr den Parameter from_id. swoole selbst stellt ConnectionList zur Abfrage aller aktuellen fds und der entsprechenden from_id bereit

Für Versionen 1.7.10 und höher ist fd Der Dateideskriptor ist nicht mehr erforderlich. fd ist eine automatisch ansteigende Zahl im Bereich von 1 bis 16 Millionen

Nachdem fd 16 Millionen überschreitet, wird es automatisch ab 1

function my_onReceive($serv, $fd, $from_id, $data)  {
    //向Connection发送数据
    $serv->send($fd, 'Swoole: '.$data); 
    //关闭Connection
    $serv->close($fd); 
}

$ wiederverwendet fd Warum Ganzzahl

$fd Verwenden Sie Ganzzahl anstelle von Objekt? Der Hauptgrund ist, dass Swoole ein Multiprozessmodell ist. Möglicherweise müssen Sie jederzeit im Worker-Prozess auf eine Clientverbindung zugreifen. Aufgabenprozess. Wenn Sie Object verwenden, müssen Sie serialisieren/unserialisieren. Fügt zusätzlichen Leistungsaufwand hinzu. Wenn $fd eine Ganzzahl ist, kann sie zur direkten Speicherung und Übertragung verwendet werden.

In der PHP-Schicht können Client-Verbindungen auch in Objekte gekapselt werden. Der Vorteil der Objektorientierung besteht darin, dass sie besser lesbar ist und der Verbindungsvorgang in Methoden gekapselt werden kann. Wie zum Beispiel

$connection->send($data);
$connection->close();

Das obige ist der detaillierte Inhalt vonWas verwendet Swoole, um FD zu speichern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn