# 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

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

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

Cette fonction retourne `true` en cas de succès ou `false` si une erreur survient.

### Exemples

Exemple #1 Exemple avec EventHttp::accept()

`<?php
$base = new EventBase();
$http = new EventHttp($base);
$addresses = [
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.
?>`

Résultat de l'exemple ci-dessus est 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