Rumah  >  Artikel  >  rangka kerja php  >  Laksanakan fungsi pelayan HTTP dalam dokumen Workerman

Laksanakan fungsi pelayan HTTP dalam dokumen Workerman

WBOY
WBOYasal
2023-11-08 09:32:221167semak imbas

Laksanakan fungsi pelayan HTTP dalam dokumen Workerman

Untuk melaksanakan fungsi pelayan HTTP dalam dokumen Workerman, contoh kod khusus diperlukan

Dalam beberapa tahun kebelakangan ini, dengan perkembangan pesat teknologi Web, pelayan Web telah menjadi bahagian yang sangat diperlukan dalam kerja harian kami. Workerman ialah rangka kerja Soket PHP berprestasi tinggi yang menyediakan cara ringkas dan fleksibel untuk melaksanakan fungsi pelayan HTTP. Dalam artikel ini, kami akan memberikan anda contoh kod khusus untuk kefungsian pelayan HTTP dalam dokumentasi Workerman.

Pertama, kita perlu memasang Workerman, yang boleh dipasang melalui Komposer. Buka alat baris arahan, tukar ke direktori projek anda, dan laksanakan arahan berikut:

composer require workerman/workerman

Selepas pemasangan selesai, kita boleh mula menulis kod. Berikut ialah kod contoh pelayan HTTP mudah:

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

use WorkermanWorker;

// 创建一个Worker监听8090端口
$httpWorker = new Worker('http://0.0.0.0:8090');

// 启用多进程模式
$httpWorker->count = 4;

// 接收到http请求时的处理函数
$httpWorker->onMessage = function ($connection, $request) {
    // 根据请求的URI获取文件路径
    $path =  __DIR__ . '/public' . $request->uri;

    // 如果请求的文件存在则发送文件内容
    if (is_file($path) && file_exists($path)) {
        $connection->send(file_get_contents($path));
    } else {
        // 否则发送404 Not Found状态码
        $connection->sendHeader('HTTP/1.1 404 Not Found');
        $connection->send('404 Not Found');
    }
};

// 运行Worker
Worker::runAll();

Dalam kod di atas, kami mula-mula memperkenalkan pemuatan automatik Komposer. Kemudian, kami mencipta instance Worker mendengar pada port 8090. Dan 4 proses didayakan untuk mengendalikan permintaan. Seterusnya, kami mentakrifkan fungsi panggil balik acara onMessage Apabila permintaan HTTP diterima, fungsi panggil balik akan dilaksanakan untuk memproses permintaan. onMessage事件回调函数,当接收到HTTP请求时,会执行该回调函数来处理请求。

在回调函数中,首先通过请求的URI获取到请求的文件路径,然后判断该文件路径是否存在。如果存在,则将文件内容发送给客户端;如果不存在,则发送404 Not Found的状态码。

最后,我们通过调用Worker::runAll()方法来运行整个Worker。

在完成了以上代码后,我们可以在终端中执行下面命令来启动HTTP服务器:

php http_server.php start

通过浏览器访问http://localhost:8090

Dalam fungsi panggil balik, mula-mula dapatkan laluan fail yang diminta melalui URI yang diminta, dan kemudian tentukan sama ada laluan fail itu wujud. Jika ia wujud, kandungan fail dihantar kepada klien jika ia tidak wujud, kod status 404 Not Found dihantar.

Akhir sekali, kami menjalankan seluruh Pekerja dengan memanggil kaedah Worker::runAll().

Selepas melengkapkan kod di atas, kita boleh melaksanakan arahan berikut dalam terminal untuk memulakan pelayan HTTP:

rrreee

Lawati http://localhost:8090 melalui pelayar untuk melihat kandungan Fail yang diminta atau maklumat 404 Not Found. 🎜🎜Ini ialah contoh kod mudah menggunakan Workerman untuk melaksanakan fungsi pelayan HTTP. Melalui contoh ini, kita boleh belajar cara mencipta tika Pekerja yang mendengar port tertentu dan mengendalikan permintaan HTTP yang diterima. 🎜🎜Sudah tentu, kami juga boleh mengembangkan dan mengoptimumkan kod mengikut keperluan khusus. Sebagai contoh, fungsi penghalaan boleh ditambah untuk mengendalikan permintaan URL yang berbeza, parameter untuk permintaan POST boleh dihuraikan, dsb. Workerman menyediakan API dan fungsi yang kaya untuk digunakan oleh pembangun secara fleksibel. 🎜🎜Ringkasnya, Workerman ialah rangka kerja Soket PHP yang berkuasa yang melaluinya kami boleh melaksanakan fungsi pelayan HTTP dengan mudah. Saya harap contoh kod di atas dapat membantu semua orang membangunkan aplikasi web yang berprestasi tinggi dan lebih stabil. 🎜

Atas ialah kandungan terperinci Laksanakan fungsi pelayan HTTP dalam dokumen Workerman. 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