Heim > PHP-Framework > Workerman > Workerman-Entwicklung: So implementieren Sie einen Webserver basierend auf dem HTTP2-Protokoll

Workerman-Entwicklung: So implementieren Sie einen Webserver basierend auf dem HTTP2-Protokoll

王林
Freigeben: 2023-11-07 11:25:57
Original
1019 Leute haben es durchsucht

Workerman-Entwicklung: So implementieren Sie einen Webserver basierend auf dem HTTP2-Protokoll

Workerman-Entwicklung: So implementieren Sie einen Webserver basierend auf dem HTTP2-Protokoll

HTTP2 ist eine Version der neuen Generation des HTTP-Protokolls, die Leistung und Sicherheit erheblich verbessert hat. Workerman ist ein häufig verwendetes PHP-Echtzeit-Kommunikationsframework, das die Vorteile hoher Leistung, einfacher Erweiterung und Benutzerfreundlichkeit bietet. Wie implementiert man einen Webserver basierend auf dem HTTP2-Protokoll? In diesem Artikel werden die folgenden Aspekte vorgestellt:

  1. Verstehen der Eigenschaften des HTTP2-Protokolls
  2. Wie Workerman das HTTP2-Protokoll unterstützt
  3. Webserver, der das spezifische HTTP2-Protokoll implementiert
  4. Codebeispiele

1. Verständnis der Eigenschaften des HTTP2-Protokoll

Das HTTP2-Protokoll ist eine Version der neuen Generation des HTTP-Protokolls, die Leistung und Sicherheit erheblich verbessert hat. Im Vergleich zum HTTP1.x-Protokoll weist es die folgenden Merkmale auf:

  1. Binärprotokoll: HTTP2 verwendet ein Binärprotokoll, während HTTP1.x ein Textprotokoll verwendet. Binäre Protokolle analysieren und übertragen Daten schneller.
  2. Multiplexing: HTTP2 kann mehrere Anfragen und Antworten parallel auf derselben Verbindung übertragen. Dies reduziert den Verbindungsaufbau und die Latenz und verbessert die allgemeine Reaktionsfähigkeit der Website.
  3. Header-Komprimierung: HTTP2 verwendet den HPACK-Algorithmus, um die Header von Anforderungen und Antworten zu komprimieren, wodurch die Größe der Datenübertragung reduziert und die Leistung verbessert wird.
  4. Server-Push: HTTP2 kann Webseiten-bezogene Ressourcendateien aktiv an den Client pushen, wodurch die Anzahl der Client-Anfragen reduziert und die Geschwindigkeit beim Öffnen von Webseiten verbessert wird.

2. Wie unterstützt Workerman das HTTP2-Protokoll?

Workerman ist ein häufig verwendetes PHP-Echtzeit-Kommunikationsframework. Es wurde ursprünglich für die Implementierung einer Hochleistungskommunikation basierend auf dem TCP-Protokoll entwickelt . Workerman verwendet standardmäßig das HTTP1.x-Protokoll, unterstützt aber auch das HTTP2-Protokoll.

Grundvoraussetzung für die Implementierung des HTTP2-Protokolls ist ein SSL-Zertifikat, da das HTTP2-Protokoll nur die Verwendung im Verschlüsselungsmodus unterstützt. Daher müssen wir das SSL-Zertifikat in Workerman so konfigurieren, dass es das HTTP2-Protokoll unterstützt. Die spezifische Konfigurationsmethode lautet wie folgt:

$context = array(
    // 这是key, 一般和crt放在一起
    'ssl' => array(
        // 请使用绝对路径
        'local_cert' => '/your/path/to/server.crt', // 服务端证书
        'local_pk' => '/your/path/to/server.key', // 服务端证书的私钥
        'verify_peer' => false, // 是否需要验证客户端证书
    )
);

// 初始化一个Worker监听http://0.0.0.0:443
$worker = new Worker("http://0.0.0.0:443", $context);

// 开启对HTTP2.0的支持
$worker->transport = 'ssl';
$worker->protocol = "Http2";
Nach dem Login kopieren

3. Implementieren Sie den spezifischen HTTP2-Protokoll-Webserver

Nachdem Workerman das HTTP2-Protokoll unterstützt, können wir den HTTP2-Protokoll-Webserver implementieren. Es gibt viele spezifische Implementierungsmethoden. Hier nehmen wir die Implementierung eines einfachen HTTP2-Protokoll-Webservers.

  1. Erstellen Sie eine PHP-Datei mit dem Namen http2_server.php und geben Sie den folgenden Code ein:
<?php
require_once __DIR__ . '/../vendor/autoload.php';

$context = array(
    'ssl' => array(
        'local_cert' => '/your/path/to/server.crt',
        'local_pk' => '/your/path/to/server.key',
        'verify_peer' => false,
    )
);

$worker = new WorkermanWorker('http://0.0.0.0:443', $context);

$worker->transport = 'ssl';
$worker->protocol = "Http2";

$worker->onConnect = function($connection) {
    echo "new connection from ip " . $connection->getRemoteIp() . "
";
};

$worker->onMessage = function($connection, $data) {
    $request_uri = $_SERVER['REQUEST_URI'];
    $response = "Hello, HTTP2!
";
    $connection->send($response);
};

Worker::runAll();
Nach dem Login kopieren
Nach dem Login kopieren
  1. Starten Sie den Webserver.

Führen Sie den folgenden Befehl aus, um den Webserver zu starten:

php http2_server.php start -d
Nach dem Login kopieren

Zu diesem Zeitpunkt, wenn Sie verwenden Wenn Sie einen Browser für den Zugriff auf https://localhost verwenden, sollten Sie die Seite mit dem Inhalt Hallo, HTTP2! sehen können.

4. Codebeispiel

Der Code wurde im dritten Teil angegeben, und der vollständige Code wird hier noch einmal angegeben. Sie müssen lediglich /your/path/to/server.crt und /your/path/to/server.key durch Ihren eigenen SSL-Zertifikatspfad ersetzen.

<?php
require_once __DIR__ . '/../vendor/autoload.php';

$context = array(
    'ssl' => array(
        'local_cert' => '/your/path/to/server.crt',
        'local_pk' => '/your/path/to/server.key',
        'verify_peer' => false,
    )
);

$worker = new WorkermanWorker('http://0.0.0.0:443', $context);

$worker->transport = 'ssl';
$worker->protocol = "Http2";

$worker->onConnect = function($connection) {
    echo "new connection from ip " . $connection->getRemoteIp() . "
";
};

$worker->onMessage = function($connection, $data) {
    $request_uri = $_SERVER['REQUEST_URI'];
    $response = "Hello, HTTP2!
";
    $connection->send($response);
};

Worker::runAll();
Nach dem Login kopieren
Nach dem Login kopieren

Zusammenfassung

Das HTTP2-Protokoll ist eine neue Generation des HTTP-Protokolls. Im Vergleich zum HTTP1.x-Protokoll wurde es hinsichtlich Leistung und Sicherheit erheblich verbessert. Workerman ist ein häufig verwendetes PHP-Echtzeit-Kommunikationsframework, das das HTTP2-Protokoll unterstützt. In diesem Artikel wird beschrieben, wie Sie mit Workerman einen Webserver basierend auf dem HTTP2-Protokoll implementieren, einschließlich der Konfiguration eines SSL-Zertifikats und der Implementierung eines bestimmten Webservers.

Das obige ist der detaillierte Inhalt vonWorkerman-Entwicklung: So implementieren Sie einen Webserver basierend auf dem HTTP2-Protokoll. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage