Table des matières
1 IO asynchrone
2. Routage
3. Websocket
Maison développement back-end tutoriel php Bibliothèque de serveur HTTP en PHP8.0 : React

Bibliothèque de serveur HTTP en PHP8.0 : React

May 14, 2023 pm 05:21 PM
php react http 服务器

Avec le développement d'Internet, l'importance des applications Web attire de plus en plus l'attention. Le serveur HTTP est l'un des fondements des applications Web. Dans le domaine de PHP, React est une excellente bibliothèque de serveur HTTP, qui nous offre une méthode de développement très pratique. Cet article présentera les concepts de base et l'utilisation de React, et expliquera certaines de ses fonctionnalités en détail.

React est une bibliothèque réseau basée sur le mécanisme de boucle d'événements. Il prend en charge des protocoles tels que HTTP et Websocket, ainsi que les E/S asynchrones. Contrairement aux autres bibliothèques de serveur HTTP PHP, React utilise une approche asynchrone et non bloquante, lui permettant de gérer plus efficacement un grand nombre de requêtes simultanées.

Installer React est très simple, nous pouvons utiliser Composer pour l'installer, comme indiqué ci-dessous :

composer require react/http:^1.0
Copier après la connexion

Ensuite, nous pouvons écrire un simple serveur HTTP pour tester les bases de React Fonction. Le code est le suivant :

use ReactHttpResponse;
use ReactHttpServer;
use PsrHttpMessageServerRequestInterface;

require __DIR__ . '/vendor/autoload.php';

$server = new Server(function (ServerRequestInterface $request) {
    return new Response(
        200,
        array(
            'Content-Type' => 'text/plain'
        ),
        "Hello World!
"
    );
});

$socket = new ReactSocketServer('0.0.0.0:8080', $loop);
$server->listen($socket);

echo "Server running at http://127.0.0.1:8080
";
Copier après la connexion

Ce code crée le serveur HTTP le plus simple basé sur React. Il accepte toutes les demandes et renvoie une réponse « Hello World ». Comme vous pouvez le voir, ce code utilise deux classes dans l'espace de noms ReactHttp : Response et Server. Parmi eux, Response représente la réponse HTTP et Server représente le serveur HTTP.

Expliquons plusieurs fonctionnalités de React :

1 IO asynchrone

React utilise des IO asynchrones pour traiter les requêtes. Lorsqu'une requête arrive, React gère la requête de manière asynchrone et continue de traiter les autres requêtes. Cela permet au serveur de gérer plusieurs requêtes simultanément, améliorant ainsi les performances.

Les E/S asynchrones doivent être utilisées en conjonction avec le mécanisme de boucle d'événements. React implémente des boucles d'événements via la classe ReactEventLoopLoop. Voici un exemple simple :

require __DIR__ . '/vendor/autoload.php';

$loop = ReactEventLoopFactory::create();

$loop->addTimer(2, function () {
    echo "This will be echoed after 2 seconds.
";
});

$loop->run();

echo "Event loop stopped.
";
Copier après la connexion

Dans ce code, nous utilisons ReactEventLoopFactory::create() pour créer une instance de boucle d'événement. Ensuite, nous utilisons la méthode $loop->addTimer() pour définir un minuteur de 2 secondes. Enfin, nous démarrons la boucle d'événements en utilisant la méthode $loop->run(). Après avoir attendu 2 secondes, la boucle d'événements exécutera la fonction de rappel du minuteur et affichera un morceau de texte. Lorsque la fonction de rappel termine son exécution, la boucle d'événements s'arrête.

2. Routage

Lors de la création d'un serveur HTTP, nous devrons peut-être définir certaines règles de routage. React prend en charge l'utilisation du routeur FastRoute. Voici un exemple :

require __DIR__ . '/vendor/autoload.php';

$loop = ReactEventLoopFactory::create();

$router = FastRoutesimpleDispatcher(function(FastRouteRouteCollector $r) {
    $r->addRoute('GET', '/', function () {
        return new ReactHttpResponse(
            200,
            array(
                'Content-Type' => 'text/plain'
            ),
            "Hello World!
"
        );
    });
    $r->addRoute('GET', '/users/{id:d+}', function ($request) {
        $id = $request->getAttribute('id');
        return new ReactHttpResponse(
            200,
            array(
                'Content-Type' => 'text/plain'
            ),
            "User $id
"
        );
    });
});

$server = new ReactHttpServer(function ($request) use ($router) {
    $routeInfo = $router->dispatch($request->getMethod(), $request->getUri()->getPath());
    switch ($routeInfo[0]) {
        case FastRouteDispatcher::NOT_FOUND:
            return new ReactHttpResponse(404, array('Content-Type' => 'text/plain'), 'Not found');
        case FastRouteDispatcher::METHOD_NOT_ALLOWED:
            $allowedMethods = $routeInfo[1];
            return new ReactHttpResponse(405, array('Content-Type' => 'text/plain'), 'Method not allowed');
        case FastRouteDispatcher::FOUND:
            $handler = $routeInfo[1];
            $vars = $routeInfo[2];
            return $handler($request, ...array_values($vars));
    }
});

$socket = new ReactSocketServer('0.0.0.0:8080', $loop);
$server->listen($socket);

echo "Server running at http://127.0.0.1:8080
";
Copier après la connexion

Dans ce code, nous utilisons le routeur FastRoute pour définir deux règles de routage pour le serveur HTTP. Lorsque l'URL demandée est « / », « Hello World » est renvoyé ; lorsque l'URL demandée est « /users/{id} », « Utilisateur {id} » est renvoyé. Parmi eux, {id:d+} signifie faire correspondre un nombre. Nous utilisons $routeInfo[0] pour obtenir les résultats de distribution de routes de FastRoute et définissons la réponse en fonction de différents résultats.

3. Websocket

En plus du protocole HTTP, React prend également en charge la mise en œuvre du protocole Websocket. Voici un exemple simple :

use ReactHttpResponse;
use ReactHttpServer;
use RatchetRFC6455MessagingMessageInterface;
use RatchetWebSocketMessageComponentInterface;
use RatchetWebSocketWsServer;

require __DIR__ . '/vendor/autoload.php';

class EchoServer implements MessageComponentInterface
{
    public function onOpen(ConnectionInterface $conn) {
        echo "Connection opened ({$conn->resourceId})
";
    }

    public function onClose(ConnectionInterface $conn) {
        echo "Connection closed ({$conn->resourceId})
";
    }

    public function onError(ConnectionInterface $conn, Exception $e) {
        echo "An error has occurred: {$e->getMessage()} ({$conn->resourceId})
";
        $conn->close();
    }

    public function onMessage(ConnectionInterface $from, MessageInterface $msg) {
        echo "Message received from ({$from->resourceId}): {$msg}
";
        $from->send($msg);
    }
}

$echo = new EchoServer();

$server = new Server(new WsServer($echo));

$socket = new ReactSocketServer('0.0.0.0:8080', $loop);
$server->listen($socket);

$loop->run();
Copier après la connexion

Dans ce code, nous implémentons une classe EchoServer en tant que serveur Websocket. Il implémente l'interface MessageComponentInterface et remplace quatre de ses méthodes. Lorsque le lien est ouvert, la méthode onOpen() sera appelée ; lorsque le lien sera fermé, la méthode onClose() sera appelée ; lorsqu'une erreur se produit sur le lien, la méthode onError() sera appelée lorsque les données seront appelées ; reçu du lien, la méthode onMessage() sera appelée.

Enfin, nous transmettons l'instance EchoServer à WSServer et créons un serveur HTTP pour écouter les requêtes WebSocket. Nous utilisons ReactSocketServer pour écouter l'adresse IP et le port, et utilisons la méthode $loop->run() pour démarrer la boucle d'événements.

Summary

React est une excellente bibliothèque de serveur HTTP PHP. Elle nous offre une méthode de développement très pratique et prend en charge de nombreuses fonctionnalités, telles que les E/S asynchrones, le routage, etc. Grâce à l'introduction de cet article, vous pourrez mieux comprendre les fonctionnalités de React et commencer à utiliser React pour développer vos propres applications Web.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Vue.js vs react: Considérations spécifiques au projet Vue.js vs react: Considérations spécifiques au projet Apr 09, 2025 am 12:01 AM

Vue.js convient aux projets de petite et moyenne taille et aux itérations rapides, tandis que React convient aux applications grandes et complexes. 1) Vue.js est facile à utiliser et convient aux situations où l'équipe est insuffisante ou l'échelle du projet est petite. 2) React a un écosystème plus riche et convient aux projets avec des performances élevées et des besoins fonctionnels complexes.

Qu'est-ce que la contrefaçon de demande inter-sites (CSRF) et comment implémentez-vous la protection CSRF dans PHP? Qu'est-ce que la contrefaçon de demande inter-sites (CSRF) et comment implémentez-vous la protection CSRF dans PHP? Apr 07, 2025 am 12:02 AM

En PHP, vous pouvez prévenir efficacement les attaques du CSRF en utilisant des jetons imprévisibles. Les méthodes spécifiques comprennent: 1. Générer et intégrer les jetons CSRF dans la forme; 2. Vérifiez la validité du jeton lors du traitement de la demande.

Le rôle de React dans HTML: Amélioration de l'expérience utilisateur Le rôle de React dans HTML: Amélioration de l'expérience utilisateur Apr 09, 2025 am 12:11 AM

React combine JSX et HTML pour améliorer l'expérience utilisateur. 1) JSX incorpore du HTML pour rendre le développement plus intuitif. 2) Le mécanisme DOM virtuel optimise les performances et réduit les opérations DOM. 3) Interface utilisateur de gestion basée sur les composants pour améliorer la maintenabilité. 4) La gestion des états et le traitement des événements améliorent l'interactivité.

Expliquez l'expression de correspondance (PHP 8) et comment elle diffère du commutateur. Expliquez l'expression de correspondance (PHP 8) et comment elle diffère du commutateur. Apr 06, 2025 am 12:03 AM

Dans PHP8, les expressions de correspondance sont une nouvelle structure de contrôle qui renvoie différents résultats en fonction de la valeur de l'expression. 1) Il est similaire à une instruction Switch, mais renvoie une valeur au lieu d'un bloc d'instruction d'exécution. 2) L'expression de correspondance est strictement comparée (===), ce qui améliore la sécurité. 3) Il évite les éventuelles omissions de rupture dans les instructions de commutation et améliore la simplicité et la lisibilité du code.

PHP et Python: comparaison de deux langages de programmation populaires PHP et Python: comparaison de deux langages de programmation populaires Apr 14, 2025 am 12:13 AM

PHP et Python ont chacun leurs propres avantages et choisissent en fonction des exigences du projet. 1.Php convient au développement Web, en particulier pour le développement rapide et la maintenance des sites Web. 2. Python convient à la science des données, à l'apprentissage automatique et à l'intelligence artificielle, avec syntaxe concise et adaptée aux débutants.

L'avenir de PHP: adaptations et innovations L'avenir de PHP: adaptations et innovations Apr 11, 2025 am 12:01 AM

L'avenir de PHP sera réalisé en s'adaptant aux nouvelles tendances technologiques et en introduisant des fonctionnalités innovantes: 1) s'adapter aux architectures de cloud computing, de conteneurisation et de microservice, en prenant en charge Docker et Kubernetes; 2) introduire des compilateurs JIT et des types d'énumération pour améliorer l'efficacité des performances et du traitement des données; 3) Optimiser en continu les performances et promouvoir les meilleures pratiques.

PHP vs Python: comprendre les différences PHP vs Python: comprendre les différences Apr 11, 2025 am 12:15 AM

PHP et Python ont chacun leurs propres avantages, et le choix doit être basé sur les exigences du projet. 1.Php convient au développement Web, avec une syntaxe simple et une efficacité d'exécution élevée. 2. Python convient à la science des données et à l'apprentissage automatique, avec une syntaxe concise et des bibliothèques riches.

PHP: un langage clé pour le développement Web PHP: un langage clé pour le développement Web Apr 13, 2025 am 12:08 AM

PHP est un langage de script largement utilisé du côté du serveur, particulièrement adapté au développement Web. 1.Php peut intégrer HTML, traiter les demandes et réponses HTTP et prend en charge une variété de bases de données. 2.PHP est utilisé pour générer du contenu Web dynamique, des données de formulaire de traitement, des bases de données d'accès, etc., avec un support communautaire solide et des ressources open source. 3. PHP est une langue interprétée, et le processus d'exécution comprend l'analyse lexicale, l'analyse grammaticale, la compilation et l'exécution. 4.PHP peut être combiné avec MySQL pour les applications avancées telles que les systèmes d'enregistrement des utilisateurs. 5. Lors du débogage de PHP, vous pouvez utiliser des fonctions telles que error_reportting () et var_dump (). 6. Optimiser le code PHP pour utiliser les mécanismes de mise en cache, optimiser les requêtes de base de données et utiliser des fonctions intégrées. 7

See all articles