EventHttp::__construct
(PECL event >= 1.2.6-beta)
EventHttp::__construct — Construit un objet EventHttp (le serveur HTTP)
Liste de paramètres
-
base
-
Evénement de base associé.
Valeurs de retour
Retourne un objet EventHttp.
Exemples
Exemple #1 Serveur HTTP simple
<?php /* * Serveur HTTP simple. * * Pour le tester : * 1) Exécutez-le sur le port de votre choix, i.e. : * $ php examples/http.php 8010 * 2) Dans un autre terminal, connectez-vous sur une adresse de ce port * et effectuez une requête GET ou POST (les autres sont désactivées ici), * i.e. : * $ nc -t 127.0.0.1 8010 * POST /about HTTP/1.0 * Content-Type: text/plain * Content-Length: 4 * Connection: close * (press Enter) * * Il devrait afficher : * a=12 * HTTP/1.0 200 OK * Content-Type: text/html; charset=ISO-8859-1 * Connection: close * * $ nc -t 127.0.0.1 8010 * GET /dump HTTP/1.0 * Content-Type: text/plain * Content-Encoding: UTF-8 * Connection: close * (press Enter) * * Il devrait afficher : * HTTP/1.0 200 OK * Content-Type: text/html; charset=ISO-8859-1 * Connection: close * (press Enter) * * $ nc -t 127.0.0.1 8010 * GET /unknown HTTP/1.0 * Connection: close * * Il devrait afficher : * HTTP/1.0 200 OK * Content-Type: text/html; charset=ISO-8859-1 * Connection: close * * 3) Regardez ce que le serveur affiche sur le précédent terminal. */ function _http_dump($req, $data) { static $counter = 0; static $max_requests = 2; if (++$counter >= $max_requests) { echo "Counter reached max requests $max_requests. Exiting\n"; exit(); } echo __METHOD__, " called\n"; echo "request:"; var_dump($req); echo "data:"; var_dump($data); echo "\n===== DUMP =====\n"; echo "Command:", $req->getCommand(), PHP_EOL; echo "URI:", $req->getUri(), PHP_EOL; echo "Input headers:"; var_dump($req->getInputHeaders()); echo "Output headers:"; var_dump($req->getOutputHeaders()); echo "\n >> Sending reply ..."; $req->sendReply(200, "OK"); echo "OK\n"; echo "\n >> Reading input buffer ...\n"; $buf = $req->getInputBuffer(); while ($s = $buf->readLine(EventBuffer::EOL_ANY)) { echo $s, PHP_EOL; } echo "No more data in the buffer\n"; } function _http_about($req) { echo __METHOD__, PHP_EOL; echo "URI: ", $req->getUri(), PHP_EOL; echo "\n >> Sending reply ..."; $req->sendReply(200, "OK"); echo "OK\n"; } function _http_default($req, $data) { echo __METHOD__, PHP_EOL; echo "URI: ", $req->getUri(), PHP_EOL; echo "\n >> Sending reply ..."; $req->sendReply(200, "OK"); echo "OK\n"; } $port = 8010; if ($argc > 1) { $port = (int) $argv[1]; } if ($port <= 0 || $port > 65535) { exit("Invalid port"); } $base = new EventBase(); $http = new EventHttp($base); $http->setAllowedMethods(EventHttpRequest::CMD_GET | EventHttpRequest::CMD_POST); $http->setCallback("/dump", "_http_dump", array(4, 8)); $http->setCallback("/about", "_http_about"); $http->setDefaultCallback("_http_default", "custom data value"); $http->bind("0.0.0.0", 8010); $base->loop(); ?>
L'exemple ci-dessus va afficher quelque chose de similaire à :
a=12 HTTP/1.0 200 OK Content-Type: text/html; charset=ISO-8859-1 Connection: close HTTP/1.0 200 OK Content-Type: text/html; charset=ISO-8859-1 Connection: close (press Enter) HTTP/1.0 200 OK Content-Type: text/html; charset=ISO-8859-1 Connection: close