Rumah  >  Artikel  >  rangka kerja php  >  Pembangunan pekerja: Bagaimana untuk melaksanakan pelayan web berdasarkan protokol HTTP2

Pembangunan pekerja: Bagaimana untuk melaksanakan pelayan web berdasarkan protokol HTTP2

王林
王林asal
2023-11-07 11:25:57958semak imbas

Pembangunan pekerja: Bagaimana untuk melaksanakan pelayan web berdasarkan protokol HTTP2

Pembangunan Pekerja: Bagaimana untuk melaksanakan pelayan web berdasarkan protokol HTTP2

HTTP2 ialah versi generasi baharu protokol HTTP, yang meningkatkan prestasi dan keselamatan Terdapat peningkatan yang hebat dalam semua aspek. Workerman ialah rangka kerja komunikasi masa nyata PHP yang biasa digunakan, yang mempunyai kelebihan prestasi tinggi, pengembangan mudah dan kemudahan penggunaan. Bagaimana untuk melaksanakan pelayan web berdasarkan protokol HTTP2? Artikel ini akan memperkenalkan dari aspek berikut:

  1. Fahami ciri-ciri protokol HTTP2
  2. Bagaimana Workerman menyokong protokol HTTP2
  3. Capai pelayan Web khusus protokol HTTP2
  4. Contoh kod

1 Fahami ciri protokol HTTP2

HTTP2 protokol adalah baharu. penjanaan versi protokol HTTP, yang mempunyai peningkatan hebat dalam prestasi dan keselamatan. Berbanding dengan protokol HTTP1.x, ia mempunyai ciri-ciri berikut:

  1. Protokol binari: HTTP2 menggunakan protokol binari, manakala HTTP1.x menggunakan protokol teks. Protokol binari menghuraikan dan memindahkan data dengan lebih cepat.
  2. Multiplexing: HTTP2 boleh menghantar berbilang permintaan dan respons secara selari pada sambungan yang sama. Ini mengurangkan penubuhan sambungan dan kependaman, meningkatkan responsif keseluruhan tapak web.
  3. Mampatan pengepala: HTTP2 menggunakan algoritma HPACK untuk memampatkan pengepala permintaan dan respons, mengurangkan saiz penghantaran data dan meningkatkan prestasi.
  4. Tekan pelayan: HTTP2 boleh secara aktif menolak fail sumber berkaitan halaman web kepada pelanggan, mengurangkan bilangan permintaan pelanggan dan meningkatkan kelajuan pembukaan halaman web.

2. Bagaimana Workerman menyokong protokol HTTP2

Workerman ialah rangka kerja komunikasi masa nyata PHP yang pada asalnya direka untuk mencapai prestasi tinggi berasaskan pada komunikasi protokol TCP, tetapi ia juga menyokong protokol HTTP. Workerman menggunakan protokol HTTP1.x secara lalai, tetapi ia juga menyokong protokol HTTP2.

Syarat asas untuk melaksanakan protokol HTTP2 ialah mempunyai sijil SSL, kerana protokol HTTP2 hanya menyokong penggunaan dalam mod penyulitan. Oleh itu, kita perlu mengkonfigurasi sijil SSL dalam Workerman untuk menyokong protokol HTTP2. Kaedah konfigurasi khusus adalah seperti berikut:

$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";

3 Laksanakan pelayan Web protokol HTTP2 khusus

Selepas Workerman menyokong protokol HTTP2, kami boleh melaksanakan pelayan Web protokol HTTP2. Terdapat banyak kaedah pelaksanaan khusus Di sini kita mengambil pelaksanaan pelayan Web protokol HTTP2 sebagai contoh.

  1. Buat fail PHP bernama http2_server.php dan masukkan kod berikut:
<?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();
  1. Mulakan Pelayan Web#🎜
Jalankan arahan berikut untuk memulakan pelayan web:

php http2_server.php start -d

Pada masa ini, jika anda menggunakan pelayar untuk mengakses https://localhost, anda seharusnya melihat kandungannya sebagai Helo, halaman HTTP2!

4. Contoh kod

Kod telah diberikan di bahagian ketiga, dan kod lengkap diberikan sekali lagi di sini. Anda hanya perlu menggantikan /your/path/to/server.crt dan /your/path/to/server.key dengan laluan sijil SSL anda sendiri.

<?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();

Ringkasan

HTTP2 protokol ialah versi generasi baharu protokol HTTP Berbanding dengan protokol HTTP1.x, ia telah dipertingkatkan dari segi prestasi dan keselamatan. Workerman ialah rangka kerja komunikasi masa nyata PHP yang biasa digunakan yang menyokong protokol HTTP2. Artikel ini menerangkan cara menggunakan Workerman untuk melaksanakan pelayan web berdasarkan protokol HTTP2, termasuk mengkonfigurasi sijil SSL dan melaksanakan pelayan web tertentu.

Atas ialah kandungan terperinci Pembangunan pekerja: Bagaimana untuk melaksanakan pelayan web berdasarkan protokol HTTP2. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn