Rumah > pembangunan bahagian belakang > tutorial php > Bina pelayan php superfast dalam beberapa minit dengan icicle

Bina pelayan php superfast dalam beberapa minit dengan icicle

Joseph Gordon-Levitt
Lepaskan: 2025-02-16 08:46:11
asal
625 orang telah melayarinya

Pengaturcaraan yang didorong oleh acara memberikan cabaran unik bagi pemaju PHP yang biasa dengan pengekodan prosedur. Dalam sifat prosedur PHP, peristiwa sering merebak ke panggilan fungsi mudah, tanpa tingkah laku tak segerak yang wujud. Semua pelaksanaan kod tetap menyekat.

Walau bagaimanapun, bahasa seperti JavaScript menunjukkan potensi gelung peristiwa sebagai komponen pusat. Wawasan ini telah menyebabkan pemaju untuk mengintegrasikan gelung acara dan keupayaan tak segerak ke dalam pelayan HTTP PHP. Artikel ini menunjukkan membina pelayan PHP HTTP berprestasi tinggi yang memanfaatkan perpustakaan icicle, dan mengintegrasikannya dengan Apache untuk hidangan fail statik yang dioptimumkan. Kod contoh boleh didapati di https://www.php.cn/link/ac2ef27277aab81da1d8dea067dd80c1 .

Build a Superfast PHP Server in Minutes with Icicle

Kelebihan Utama

  • Kuasa Asynchronous Icicle: Keupayaan pengaturcaraan asynchronous Icicle membolehkan penciptaan pelayan PHP yang sangat cepat. Pengendalian permintaan serentak dengan ketara meningkatkan prestasi.
  • integrasi Apache untuk fail statik: secara efisien offloads fail statik yang berkhidmat ke Apache, meninggalkan pelayan php icicle untuk mengendalikan permintaan dinamik.
  • Peningkatan dan templating Templating: Memperluas pelayan asas dengan penghala (seperti Leagueroute) membolehkan pengendalian dan penghalaan permintaan yang canggih. Enjin templat (seperti liga) menambah ciri -ciri seperti susun atur dan warisan templat untuk aplikasi yang kompleks.

konfigurasi Apache untuk hidangan fail statik yang dioptimumkan

Untuk mengelakkan pemprosesan PHP yang tidak perlu untuk fail statik, konfigurasikan Apache untuk melayani mereka secara langsung:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) http://%{SERVER_NAME}:9001%{REQUEST_URI} [P]
Salin selepas log masuk
Konfigurasi

ini mengarahkan Apache untuk memohon permintaan untuk fail yang tidak wujud ke port yang berbeza (mis., 9001), di mana pelayan php icicle akan mengendalikannya. mod_rewrite

pelayan http icicle asas

bermula dengan memasang icicle:

composer require icicleio/http
Salin selepas log masuk
Contoh Pelayan HTTP ICICLE yang mudah:

// server.php
require __DIR__ . "/vendor/autoload.php";

use Icicle\Http\Message\RequestInterface;
use Icicle\Http\Message\Response;
use Icicle\Http\Server\Server;
use Icicle\Loop;
use Icicle\Socket\Client\ClientInterface;

$server = new Server(function (RequestInterface $request, ClientInterface $client) {
    $response = (new Response(200))->withHeader("Content-Type", "text/plain");
    yield $response->getBody()->end("hello world");
    yield $response;
});

$server->listen(9001);
Loop\run();
Salin selepas log masuk

routing lanjutan dengan leagueroute

untuk penghalaan yang lebih mantap, mengintegrasikan Leagueroute:

composer require league/route
Salin selepas log masuk
Enhanced

dengan penghalaan: server.php

// server.php
// ... (previous imports) ...
use League\Route\Http\Exception\MethodNotAllowedException;
use League\Route\Http\Exception\NotFoundException;
use League\Route\RouteCollection;
use League\Route\Strategy\UriStrategy;

// ... (Server creation) ...

    $router = new RouteCollection();
    $router->setStrategy(new UriStrategy());
    require __DIR__ . "/routes.php";
    $dispatcher = $router->getDispatcher();

    try {
        $result = $dispatcher->dispatch($request->getMethod(), $request->getRequestTarget());
        $status = 200;
        $content = $result->getContent();
    } catch (NotFoundException $e) {
        $status = 404;
        $content = "not found";
    } catch (MethodNotAllowedException $e) {
        $status = 405;
        $content = "method not allowed";
    }

    // ... (Response creation and sending) ...
Salin selepas log masuk
sampel

: routes.php

$router->addRoute("GET", "/home", function () {
    return "hello world";
});
Salin selepas log masuk

memberikan pandangan kompleks dengan ligaplates

Untuk pandangan kompleks, gunakan LeaguePlates:

composer require league/plates
Salin selepas log masuk
Melaksanakan templating (contoh coretan dari

dan templates/layout.php, dan dikemas kini templates/home.php ditinggalkan untuk keringkasan tetapi ikuti struktur contoh asal). routes.php

penanda aras prestasi dan kesimpulan

Artikel asal termasuk penanda aras prestasi yang menunjukkan keupayaan pelayan untuk mengendalikan sejumlah besar permintaan serentak. Penanda aras ini harus dipertimbangkan dalam konteks perkakasan dan syarat -syarat tertentu di mana mereka dijalankan. Takeaway utama adalah potensi untuk prestasi tinggi dengan model asynchronous Icicle. Artikel ini disimpulkan dengan menggalakkan percubaan dan perbincangan masyarakat. Penanda aras yang dikemas kini oleh pengarang icicle juga dimasukkan. Bahagian FAQ selanjutnya menjelaskan pelbagai aspek menggunakan icicle untuk pembangunan pelayan.

Atas ialah kandungan terperinci Bina pelayan php superfast dalam beberapa minit dengan icicle. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan