在线文档教程
PHP
事件 | Event

EventHttp::accept

EventHttp::accept

(PECL event >= 1.2.6-beta)

EventHttp :: accept - 使 HTTP 服务器接受指定套接字流或资源上的连接

描述

public bool EventHttp::accept ( mixed $socket )

使 HTTP 服务器接受指定套接字流或资源上的连接。套接字应该准备好接受连接。

可以多次调用以接受不同套接字上的连接。

注意:要绑定一个套接字,在一次调用中监听接受套接字上的连接,请使用 EventHttp :: bind()。仅当已经有套接字准备好接受连接时,才需要 EventHttp :: accept()

参数

socket

套接字资源,流或数字文件描述符,表示准备好接受连接的套接字。

返回值

TRUE成功返回。否则FALSE

例子

示例#1 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("socket_bind failed\n"     }     socket_listen($socket[$i], 0     socket_set_nonblock($socket[$i]     if (!$http->accept($socket[$i])) {         echo "Accept failed\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 "Caught SIGINT. Stopping...\n";     $base->stop( } $signal->add( $base->dispatch( echo "END\n"; // We didn't close sockets, since Libevent already sets // CLOSE_ON_FREE and CLOSE_ON_EXEC flags on the file  // descriptor associated with the sockets. ?>

上面的例子会输出类似于:

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

也可以看看

  • EventHttp :: bind() - 绑定指定地址和端口上的 HTTP 服务器

← EventHttp

EventHttp::addServerAlias →