Heim  >  Artikel  >  Backend-Entwicklung  >  Klicken Sie in Thinkphp direkt auf Swoole

Klicken Sie in Thinkphp direkt auf Swoole

coldplay.xixi
coldplay.xixinach vorne
2020-06-08 10:54:394409Durchsuche


🎜>

Swoole ist eine asynchrone PHP-Netzwerkkommunikations-Engine für Produktionsumgebungen. Ermöglicht PHP-Entwicklern das Schreiben leistungsstarker asynchroner und gleichzeitiger TCP-, UDP-, Unix-Socket-, HTTP- und WebSocket-Dienste.

Klicken Sie in Thinkphp direkt auf Swoole

Installation

Installieren Sie zuerst die Swoole-Erweiterung gemäß den Anweisungen auf der offiziellen Swoole-Website und installieren Sie dann die Think-Swoole-Erweiterung.

composer require topthink/think-swoole=2.0.*使用

Verwenden Sie

Swoole unterstützt derzeit kein Windows

Verwenden Sie Swoole als HttpServer

Starten Sie den Server von Befehlszeile (erfordert Version 2.0+ think-swoole-Erweiterung)

Starten Sie den Server direkt über die Befehlszeile.

php think swoole
Nach Abschluss des Startvorgangs wird ein HTTP-Server unter 0.0.0.0:9501 gestartet, der direkt auf die aktuelle Anwendung zugreifen kann.

Swoole-Parameter können in swoole.php im Anwendungskonfigurationsverzeichnis konfiguriert werden (Einzelheiten finden Sie im Inhalt der Konfigurationsdatei).

Wenn Sie im Daemon-Modus ausführen müssen, können Sie

php think swoole -d

verwenden oder

'daemonize' =>   true

in der swoole.php-Datei festlegen. Hinweis: Da es bei onWorkerStart kein HTTP_HOST gibt läuft, der letzte Glücklicherweise unterstützt das Setzen von app_host in der Anwendungskonfigurationsdatei

Vorgänge wie

php think swoole [start|stop|reload|restart]

Da es beim Ausführen von onWorkerStart keinen HTTP_HOST gibt, ist es am besten, den Parameter app_host im festzulegen Anwendungskonfigurationsdatei

Nach dem Start kann mit

http://127.0.0.1:9501

auf Ihre App zugegriffen werden.

Wenn Sie die Adresse und den Port konfigurieren müssen, können Sie die Konfigurationsdatei

swoole.php im Anwendungskonfigurationsverzeichnis hinzufügen und dann Folgendes festlegen:

<?phpreturn [
    &#39;host&#39;  => &#39;tp5.com&#39;,
    &#39;port&#39;  =>   9508,];
可以支持Swoole自身的配置参数设置,例如:
<?phpreturn [
    &#39;host&#39;          => &#39;tp5.com&#39;,
    &#39;port&#39;          =>   9508,
    &#39;worker_num&#39;    =>   4,
    &#39;max_request&#39;   =>   1000,];

Das Ereignis onWorkerStart und onRequest Rückrufmethoden sind in der Erweiterung definiert (Bitte nicht ersetzen, wenn Sie damit nicht vertraut sind). Wenn Sie die Ereignisrückrufmethode von swoole anpassen müssen, können Sie die Abschlussdefinition in der Konfigurationsdatei verwenden.

<?phpreturn [
    &#39;host&#39;          => &#39;tp5.com&#39;,
    &#39;port&#39;          =>   9508,
    &#39;worker_num&#39;    =>   4,
    &#39;max_request&#39;   =>   1000,
    &#39;WorkerStop&#39;    =>   function($server, $worker_id){
        // 添加你的代码
    },];

Oder fügen Sie

direkt in der Konfigurationsdatei hinzu, um Swoole als Server zu verwenden. Server


kann das direkte Starten eines Swoole-Servers unterstützen (erfordert 2.0.0). 9 + Version)

php think swoole:server

startet einen Websocket-Dienst bei 0.0.0.0:9508.

Wenn Sie benutzerdefinierte Parameter benötigen, können Sie diese in config/swoole_server.php konfigurieren, einschließlich:

Konfigurationsparameter


Beschreibung
Typ Diensttyp
host Listening-Adresse
port Listening-Port
Modus Ausführungsmodus
socket Socket-Typ

und unterstützt alle Parameter von swoole.

Es unterstützt auch die Verwendung von Abschlüssen zum Definieren zugehöriger Ereignisrückrufe.

return [
    // 扩展自身配置
    &#39;host&#39;         => &#39;0.0.0.0&#39;, // 监听地址
    &#39;port&#39;         => 9501, // 监听端口
    &#39;type&#39;         => &#39;socket&#39;, // 服务类型 支持 socket http server
    &#39;mode&#39;         => SWOOLE_PROCESS,
    &#39;socket_type&#39;  => SWOOLE_SOCK_TCP,
 
    // 可以支持swoole的所有配置参数
    &#39;daemonize&#39;    => false,
 
    // 事件回调定义
    &#39;onOpen&#39;       => function ($server, $request) {
        echo "server: handshake success with fd{$request->fd}\n";
    },
 
    &#39;onMessage&#39;    => function ($server, $frame) {
        echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";
        $server->push($frame->fd, "this is server");
    },
 
    &#39;onRequest&#39;    => function ($request, $response) {
        $response->end("<h1>Hello Swoole. #" . rand(1000, 9999) . "</h1>");
    },
 
    &#39;onClose&#39;      => function ($ser, $fd) {
        echo "client {$fd} closed\n";
    },];

Sie können auch eine benutzerdefinierte Serviceklasse verwenden
配置参数
描述
type 服务类型
host 监听地址
port 监听端口
mode 运行模式
socket Socket type
<?php
namespace app\http;use think\swoole\Server;class Swoole extends Server{
    protected $host = &#39;127.0.0.1&#39;;
    protected $port = 9502;
    protected $option = [ 
        &#39;worker_num&#39;=> 4,
        &#39;daemonize&#39; => true,
        &#39;backlog&#39;   => 128
    ];
 
    public function onReceive($server, $fd, $from_id, $data)
    {
        $server->send($fd, &#39;Swoole: &#39;.$data);
    }}

Unterstützt alle Callback-Methodendefinitionen von swoole (Callback-Methoden müssen öffentliche Typen sein)
Wenn das serverType-Attribut als Socket oder http definiert ist , swoole wird unterstützt swoole_websocket_server und swoole_http_server

Dann fügen Sie Konfigurationsparameter in swoole_server.php hinzu:

return [
    &#39;swoole_class&#39;  =>   &#39;app\http\Swoole&#39;,];

Nach der Definition dieses Parameters sind andere Konfigurationsparameter nicht mehr gültig.

Starten Sie den Server über die Befehlszeile

php think swoole:server

Unterstützt Neuladen|Neustart|Stopp|Statusvorgang

php think swoole:server reload

Empfohlenes Tutorial: "

PHP-Video-Tutorial

"

Das obige ist der detaillierte Inhalt vonKlicken Sie in Thinkphp direkt auf Swoole. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:liqingbo.cn. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen