EventHttp::setCallback

(PECL event >= 1.4.0-beta)

EventHttp::setCallbackDefine uma função de retorno para o URI especificado

Descrição

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

Define uma função de retorno para o URI especificado.

Parâmetros

path

O caminho para o qual será chamada a função de retorno.

cb

A função de retorno do tipo callable que é chamada no caminho (path) especificado. Deve corresponder ao seguinte protótipo:

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

req

Objeto EventHttpRequest.

arg

Dados personalizados.

arg

Dados personalizados.

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha.

Exemplos

Exemplo #1 Exemplo de EventHttp::setCallback()

<?php
/*
* Servidor HTTP simples.
*
* Para testar:
* 1) Execute-o em uma porta de sua escolha, por exemplo:
* $ php examples/http.php 8010
* 2) Em outro terminal, conecte-se a algum endereço nesta porta
* e faça uma solicitação GET ou POST (outras são desativadas aqui), por exemplo:
* $ nc -t 127.0.0.1 8010
* POST /about HTTP/1.0
* Content-Type: text/plain
* Content-Length: 4
* Connection: close
* (pressione Enter)
*
* Resultado:
* a=12
* HTTP/1.0 200 OK
* Content-Type: text/html; charset=ISO-8859-1
* Connection: close
*
* 3) Veja o que o servidor exibe na janela do terminal anterior.
*/

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

if (++
$counter >= $max_requests) {
echo
"O contador atingiu o máximo de solicitações $max_requests. Saindo\n";
exit();
}

echo
__METHOD__, " chamado\n";
echo
"requisição:"; var_dump($req);
echo
"dados:"; var_dump($data);

echo
"\n===== DUMP =====\n";
echo
"Comando:", $req->getCommand(), PHP_EOL;
echo
"URI:", $req->getUri(), PHP_EOL;
echo
"Cabeçalhos de entrada:"; var_dump($req->getInputHeaders());
echo
"Cabeçalhos de saída:"; var_dump($req->getOutputHeaders());

echo
"\n >> Enviando resposta ...";
$req->sendReply(200, "OK");
echo
"OK\n";

echo
"\n >> Lendo buffer de entrada ...\n";
$buf = $req->getInputBuffer();
while (
$s = $buf->readLine(EventBuffer::EOL_ANY)) {
echo
$s, PHP_EOL;
}
echo
"Não há mais dados no buffer\n";
}

function
_http_about($req) {
echo
__METHOD__, PHP_EOL;
echo
"URI: ", $req->getUri(), PHP_EOL;
echo
"\n >> Enviando resposta ...";
$req->sendReply(200, "OK");
echo
"OK\n";
}

function
_http_default($req, $data) {
echo
__METHOD__, PHP_EOL;
echo
"URI: ", $req->getUri(), PHP_EOL;
echo
"\n >> Enviando resposta ...";
$req->sendReply(200, "OK");
echo
"OK\n";
}

$port = 8010;
if (
$argc > 1) {
$port = (int) $argv[1];
}
if (
$port <= 0 || $port > 65535) {
exit(
"Porta inválida");
}

$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", "valor de dados personalizados");

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

O exemplo acima produzirá algo semelhante a:

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

Veja Também

  • EventHttp::setDefaultCallback() - Define a função de retorno padrão para lidar com solicitações que não são capturadas por funções de retorno específicas
adicione uma nota

Notas Enviadas por Usuários (em inglês)

Não há notas de usuários para esta página.
To Top