Heim  >  Artikel  >  Backend-Entwicklung  >  Swoole Hochleistungs-PHP-Framework

Swoole Hochleistungs-PHP-Framework

不言
不言Original
2018-04-24 16:35:402578Durchsuche

In diesem Artikel wird hauptsächlich das Hochleistungs-PHP-Framework Swoole vorgestellt, das einen gewissen Referenzwert hat. Jetzt kann ich es mit allen Freunden teilen, die es brauchen.

Ich habe schon einmal NodeJS gelernt, was leistungsstark ist Leistung.

Das diesjährige Ziel ist es, tief in die Arbeit einzutauchen und Swool zu verwenden. Ich habe früher Workman verwendet, um das Chat-System zu verwalten, und die Arbeit musste in einem Fenster ausgeführt werden. Daher werden die Vorteile des Arbeiters in Bezug auf die Leistung nicht vollständig genutzt.

In diesem Monat haben wir, genau wie es das Projekt erforderte, Swoole verwendet, um die Schnittstelle des Kundenservice-Chat-Systems des WeChat Mini-Programmcenters zu entwickeln.

Chat zwischen Kunden und Kundendienst über die offizielle Schnittstelle von WeChat.

Swoole Hochleistungs-PHP-Framework

Mit Swoole können Sie ganz einfach WebSocket verwalten und online chatten.

Voraussetzungen für das Senden von Nachrichten an bestimmte Benutzer

Wenn sich ein Client mit dem Socket verbindet, weist das System einen fd zu, der den einzelnen Client identifiziert.
Beim Anmelden kann der Kundendienst die Informationen des Benutzers an swoole senden, einschließlich der Kundendienst-ID.

Um Nachrichten an bestimmte Kunden oder Gruppen zu senden, speichern Sie die Kundendienst-ID und den entsprechenden FD in Redis. Wenn Sie den Socket öffnen und an einen Kundendienst senden, müssen Sie nur den entsprechenden Schlüssel des Redis-Kundendienstes lesen, um ihn an den angegebenen Benutzer zu senden.

Asynchron

Obwohl das aktuelle Anfragevolumen nicht groß ist, wird eine asynchrone Aufgabe hinzugefügt, wenn der Kundendienst Nachrichten sendet und empfängt, um sicherzustellen, dass der Code länger verwendet werden kann. Swoole kann auch damit umgehen, wenn das Anfrageaufkommen groß ist.

Asynchrones Speicherprotokoll

Chatten ist nicht wie das Schreiben eines Artikels. Es kann Zehntausende von Anfragen pro Sekunde geben. Um das System reibungslos zu gestalten, bietet Swoole asynchrones Lesen und Schreiben, um uns beim Lesen und Schreiben von Protokollen für unnötig zeitaufwändige Vorgänge zu helfen.

function log_text($data){
    swoole_async_writefile(__DIR__ . '/log.txt', $data.$data."\n\n", function($filename) {
    }, FILE_APPEND);
}

Grundlegende asynchrone Vorlage

Objektorientierte Klasse

<?phpclass WebsocketTest {
    public $server;    public function __construct() {
        $this->server = new swoole_websocket_server("0.0.0.0", 7272);        
        $this->server->on(&#39;open&#39;,[$this,&#39;open&#39;]);        
        $this->server->on(&#39;message&#39;, [$this,&#39;message&#39;]);        
        $this->server->on(&#39;close&#39;, [$this,&#39;close&#39;]);        
        $this->server->on(&#39;request&#39;, [$this,&#39;request&#39;]);        
        $this->server->on(&#39;task&#39;,[$this,&#39;task&#39;]);        
        $this->server->on(&#39;finish&#39;,[$this,&#39;finish&#39;]);        
        $this->server->set([//            &#39;daemonize&#39;=>true,
        &#39;task_worker_num&#39;=>10,
        ]);        $this->server->start();
    }    //@异步接受数据, 发送数据
    function finish($server, $task_id,$data){
        $server->push($data[&#39;fd&#39;],$data[&#39;data&#39;]);
    }    //@异步处理数据
    function task($server, $task_id, $from_id, $data){
        //接受到数据之后处理复杂逻辑处理
        sleep(&#39;5&#39;);        
        $data[&#39;data&#39;] = &#39;服务器发送&#39;.$data[&#39;data&#39;];        
        $server->finish($data);
    }    
    function request($request, $response) {
        foreach ($this->server->connections as $fd) {            
        $this->server->push($fd, $request->get[&#39;message&#39;]);
        }
    }    function close($ser, $fd) {
        echo "client {$fd} closed\n";
    }    function message(swoole_websocket_server $server, $frame) {
        $data = [            
        &#39;fd&#39;=>$frame->fd,            &#39;data&#39;=>$frame->data,
        ];        
        $server->task($data);
    }    function open( $server, $request) {

    }
}new WebsocketTest();

Das obige ist der detaillierte Inhalt vonSwoole Hochleistungs-PHP-Framework. 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
Vorheriger Artikel:PHP-Restoperation (Modulo).Nächster Artikel:PHP-Restoperation (Modulo).