EventHttp::setCallback

(PECL event >= 1.4.0-beta)

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

Description

publicEventHttp::setCallback(string$path, string$cb, string$arg = ?): void

Définit une fonction de rapppel 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 :

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


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

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 attrappées par des fonctions de rappel spécifiques
To Top