EventHttp::accept
(PECL event >= 1.2.6-beta)
EventHttp::accept — Autorise un serveur HTTP à accepter les connexions sur le socket ou la ressource spécifiée
Description
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
- EventHttp::bind() - Lie un serveur HTTP sur une adresse et un port spécifiés