EventHttp::accept

(PECL event >= 1.2.6-beta)

EventHttp::acceptAutorise un serveur HTTP à accepter les connexions sur le socket ou la ressource spécifiée

Description

public bool EventHttp::accept ( mixed $socket )

Autorise un serveur HTTP à accepter les connexions sur le socket ou la ressource spécifiée. Le socket doit être prêt à accepter les connexions.

Peut être appelé plusieurs fois pour accepter les connexions sur différents sockets.

Note:

Pour lier un socket, une connexion listen et une connexion accept sur le socket en un seul appel, utilisez la méthode EventHttp::bind(). EventHttp::accept() n'est nécessaire que si un socket est prêt à accepter les connexions.

Liste de paramètres

socket

Socket, flux, ou descripteur numérique de fichier représentant un socket prêt à accepter les connexions.

Valeurs de retour

Retourne TRUE en cas de succès, FALSE sinon.

Exemples

Exemple #1 Exemple avec 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("échec de socket_bind\n");
	}
	socket_listen($socket[$i], 0);
	socket_set_nonblock($socket[$i]);

	if (!$http->accept($socket[$i])) {
		echo "L'acceptation a échouée\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 reçu. Arrêt...\n";
	$base->stop();
});
$signal->add();

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

// Nous ne fermons pas les sockets, sachant que Libevent définit
// déjà les drapeaux CLOSE_ON_FREE et CLOSE_ON_EXEC sur le descripteur
// de fichier avec les sockets.
?>

L'exemple ci-dessus va afficher quelque chose de similaire à :

Client:
$ 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

Server:
127.0.0.1 8091
127.0.0.2 8092
URI : /about
OK

Voir aussi

LoadingChargement en cours