Heim >Backend-Entwicklung >PHP-Tutorial >Klicken Sie in Thinkphp direkt auf Swoole
🎜>
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.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 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' => truein 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:9501auf 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 [ 'host' => 'tp5.com', 'port' => 9508,]; 可以支持Swoole自身的配置参数设置,例如: <?phpreturn [ 'host' => 'tp5.com', 'port' => 9508, 'worker_num' => 4, 'max_request' => 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 [ 'host' => 'tp5.com', 'port' => 9508, 'worker_num' => 4, 'max_request' => 1000, 'WorkerStop' => function($server, $worker_id){ // 添加你的代码 },];
Oder fügen Sie
direkt in der Konfigurationsdatei hinzu, um Swoole als Server zu verwenden. Serverphp 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 [ // 扩展自身配置 'host' => '0.0.0.0', // 监听地址 'port' => 9501, // 监听端口 'type' => 'socket', // 服务类型 支持 socket http server 'mode' => SWOOLE_PROCESS, 'socket_type' => SWOOLE_SOCK_TCP, // 可以支持swoole的所有配置参数 'daemonize' => false, // 事件回调定义 'onOpen' => function ($server, $request) { echo "server: handshake success with fd{$request->fd}\n"; }, 'onMessage' => function ($server, $frame) { echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n"; $server->push($frame->fd, "this is server"); }, 'onRequest' => function ($request, $response) { $response->end("<h1>Hello Swoole. #" . rand(1000, 9999) . "</h1>"); }, 'onClose' => 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 = '127.0.0.1'; protected $port = 9502; protected $option = [ 'worker_num'=> 4, 'daemonize' => true, 'backlog' => 128 ]; public function onReceive($server, $fd, $from_id, $data) { $server->send($fd, 'Swoole: '.$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 [ 'swoole_class' => 'app\http\Swoole',];
Nach der Definition dieses Parameters sind andere Konfigurationsparameter nicht mehr gültig.
php think swoole:serverUnterstützt Neuladen|Neustart|Stopp|Statusvorgang
php think swoole:server reloadEmpfohlenes 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!