EventHttp::accept

(PECL event >= 1.2.6-beta)

EventHttp::acceptPermite a un servidor HTTP aceptar las conexiones en el socket o recurso especificado

Descripción

public EventHttp::accept( mixed $socket ): bool

Permite a un servidor HTTP aceptar las conexiones en el socket o recurso especificado. El socket debe estar listo para aceptar las conexiones.

Puede ser llamado varias veces para aceptar las conexiones en diferentes sockets.

Nota:

Para enlazar un socket, una conexión listen y una conexión accept en el socket en una sola llamada, utilice el método EventHttp::bind(). EventHttp::accept() solo es necesario si un socket está listo para aceptar las conexiones.

Parámetros

socket

Socket, flujo, o descriptor numérico de fichero representando un socket listo para aceptar las conexiones.

Valores devueltos

Devuelve true en caso de éxito o false en caso de error.

Ejemplos

Ejemplo #1 Ejemplo con EventHttp::accept()

<?php
$base
= new EventBase();
$http = new EventHttp($base);

$addresses = array (
8091 => "127.0.0.1",
8092 => "127.0.0.2",
);
$i = 0;

$socket = array();

foreach (
$addresses as $port => $ip) {
echo
$ip, " ", $port, PHP_EOL;
$socket[$i] = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!
socket_bind($socket[$i], $ip, $port)) {
exit(
"fallo de socket_bind\n");
}
socket_listen($socket[$i], 0);
socket_set_nonblock($socket[$i]);

if (!
$http->accept($socket[$i])) {
echo
"La aceptación ha fallado\n";
exit(
1);
}

++
$i;
}

$http->setCallback("/some-page", function() {
echo
"(some-page)\n";
echo
"URI : ", $req->getUri(), PHP_EOL;
$req->sendReply(200, "OK");
echo
"OK\n";
});

$http->setDefaultCallback(function($req) {
echo
"URI : ", $req->getUri(), PHP_EOL;
$req->sendReply(200, "OK");
echo
"OK\n";
});

$signal = Event::signal($base, SIGINT, function () use ($base) {
echo
"SIGINT recibido. Deteniendo...\n";
$base->stop();
});
$signal->add();

$base->dispatch();
echo
"END\n";

// No cerramos los sockets, sabiendo que Libevent ya establece
// los flags CLOSE_ON_FREE y CLOSE_ON_EXEC en el descriptor
// de fichero con los sockets.
?>

El resultado del ejemplo sería algo similar a:

Cliente:
$ nc 127.0.0.1 8091
GET /about HTTP/1.0
Connection: close

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

Servidor:
127.0.0.1 8091
127.0.0.2 8092
URI : /about
OK

Ver también

  • EventHttp::bind() - Liga un servidor HTTP a una dirección y un puerto especificados
add a note

User Contributed Notes

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