Maison  >  Article  >  cadre php  >  Implémentez la fonctionnalité du serveur HTTP dans le document Workerman

Implémentez la fonctionnalité du serveur HTTP dans le document Workerman

WBOY
WBOYoriginal
2023-11-08 09:32:221167parcourir

Implémentez la fonctionnalité du serveur HTTP dans le document Workerman

Pour implémenter la fonction de serveur HTTP dans le document Workerman, des exemples de code spécifiques sont nécessaires

Ces dernières années, avec le développement rapide de la technologie Web, les serveurs Web sont devenus un élément indispensable de notre travail quotidien. Workerman est un framework PHP Socket hautes performances qui fournit un moyen concis et flexible d'implémenter les fonctions du serveur HTTP. Dans cet article, nous vous fournirons des exemples de code spécifiques pour la fonctionnalité du serveur HTTP dans la documentation Workerman.

Tout d'abord, nous devons installer Workerman, qui peut être installé via Composer. Ouvrez l'outil de ligne de commande, accédez au répertoire de votre projet et exécutez la commande suivante :

composer require workerman/workerman

Une fois l'installation terminée, nous pouvons commencer à écrire du code. Voici un exemple de code simple de serveur HTTP :

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

Dans le code ci-dessus, nous avons d'abord introduit le chargement automatique de Composer. Ensuite, nous avons créé une instance Worker écoutant sur le port 8090. Et 4 processus sont activés pour traiter les demandes. Ensuite, nous définissons la fonction de rappel d'événement onMessage Lorsqu'une requête HTTP est reçue, la fonction de rappel sera exécutée pour traiter la requête. onMessage事件回调函数,当接收到HTTP请求时,会执行该回调函数来处理请求。

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

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

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

php http_server.php start

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

Dans la fonction de rappel, obtenez d'abord le chemin du fichier demandé via l'URI demandé, puis déterminez si le chemin du fichier existe. S'il existe, le contenu du fichier est envoyé au client ; s'il n'existe pas, un code d'état 404 Not Found est envoyé.

Enfin, nous exécutons l'intégralité de Worker en appelant la méthode Worker::runAll().

Après avoir terminé le code ci-dessus, nous pouvons exécuter la commande suivante dans le terminal pour démarrer le serveur HTTP :

rrreee

Visitez http://localhost:8090 via le navigateur pour voir le contenu du fichier demandé ou 404 informations non trouvées. 🎜🎜Il s'agit d'un exemple de code simple utilisant Workerman pour implémenter les fonctions du serveur HTTP. Grâce à cet exemple, nous pouvons apprendre à créer une instance Worker qui écoute un port spécifié et gère les requêtes HTTP reçues. 🎜🎜Bien sûr, nous pouvons également étendre et optimiser le code en fonction de besoins spécifiques. Par exemple, des fonctions de routage peuvent être ajoutées pour gérer différentes requêtes URL, les paramètres des requêtes POST peuvent être analysés, etc. Workerman fournit des API et des fonctions riches que les développeurs peuvent utiliser de manière flexible. 🎜🎜En résumé, Workerman est un puissant framework PHP Socket grâce auquel nous pouvons facilement implémenter des fonctions de serveur HTTP. J'espère que les exemples de code ci-dessus pourront aider tout le monde à développer des applications Web plus performantes et plus stables. 🎜

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:
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