EventHttp::setCallback

(PECL event >= 1.4.0-beta)

EventHttp::setCallbackDéfinit une fonction de rappel pour une URI spécifique

Description

public function EventHttp::setCallback( string $path , string $cb , string $arg = ?): void

Définit une fonction de rappel pour une URI spécifique.

Liste de paramètres

path

L'URI pour laquelle la fonction de rappel doit être invoquée.

cb

La fonction de rappel callable qui sera invoquée lors d'une demande sur l'URI path. Elle doit correspondre au prototype suivant :

function callback( EventHttpRequest $req = NULL , mixed $arg = NULL ): void
req

Un objet EventHttpRequest.

arg

Données personnalisées.

arg

Données personnalisées.

Valeurs de retour

Cette fonction retourne true en cas de succès ou false si une erreur survient.

Exemples

Exemple #1 Exemple avec EventHttp::setCallback()

<?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 réalisez 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
*
* 3) Voir ce qu'affiche le serveur sur le précédent terminal.
*/

function _http_dump($req, $data) {
static
$counter = 0;
static
$max_requests = 2;

if (++
$counter >= $max_requests) {
echo
"Le compteur a atteint le maximum de requêtes $max_requests. Sortie\n";
exit();
}

echo
__METHOD__, " appelée\n";
echo
"requête :"; var_dump($req);
echo
"données :"; var_dump($data);

echo
"\n===== DUMP =====\n";
echo
"Commande :", $req->getCommand(), PHP_EOL;
echo
"URI :", $req->getUri(), PHP_EOL;
echo
"En-têtes d'entrée :"; var_dump($req->getInputHeaders());
echo
"En-têtes de sortie :"; var_dump($req->getOutputHeaders());

echo
"\n >> Envoi de la réponse ...";
$req->sendReply(200, "OK");
echo
"OK\n";

echo
"\n >> Lecture du buffer d'entrée ...\n";
$buf = $req->getInputBuffer();
while (
$s = $buf->readLine(EventBuffer::EOL_ANY)) {
echo
$s, PHP_EOL;
}
echo
"Plus de données dans le buffer\n";
}

function
_http_about($req) {
echo
__METHOD__, PHP_EOL;
echo
"URI : ", $req->getUri(), PHP_EOL;
echo
"\n >> Envoi de la réponse ...";
$req->sendReply(200, "OK");
echo
"OK\n";
}

function
_http_default($req, $data) {
echo
__METHOD__, PHP_EOL;
echo
"URI : ", $req->getUri(), PHP_EOL;
echo
"\n >> Envoi de la réponse ...";
$req->sendReply(200, "OK");
echo
"OK\n";
}

$port = 8010;
if (
$argc > 1) {
$port = (int) $argv[1];
}
if (
$port <= 0 || $port > 65535) {
exit(
"Port invalide");
}

$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", "valeur de données personnalisée");

$http->bind("0.0.0.0", 8010);
$base->loop();
?>

Résultat de l'exemple ci-dessus est similaire à :

a=12
HTTP/1.0 200 OK
Content-Type: text/html; charset=ISO-8859-1
Connection: close

Voir aussi

  • EventHttp::setDefaultCallback() - Définit la fonction de rappel par défaut pour gérer les requêtes qui ne sont pas attrapées par des fonctions de rappel spécifiques
add a note

User Contributed Notes

There are no user contributed notes for this page.
To Top