PHP.mk документација

EventListener::__construct

Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.

eventlistener.construct.php PHP.net прокси Преводот се освежува
Оригинал на PHP.net
Патека eventlistener.construct.php Локална патека за оваа страница.
Извор php.net/manual/en Оригиналниот HTML се реупотребува и локално се стилизира.
Режим Прокси + превод во позадина Кодовите, табелите и белешките остануваат читливи во истиот тек.
EventListener::__construct

Референца за `eventlistener.construct.php` со подобрена типографија и навигација.

eventlistener.construct.php

EventListener::__construct

класата Event

EventListener::__constructКреира нов слушател за конекција поврзан со основите на настаните

= NULL

public function EventListener::__construct(
          EventBase $base ,
          callable $cb ,
          mixed $data ,
          int $flags ,
          int $backlog ,
          mixed $target
)

Креира нов слушател за конекција поврзан со основите на настаните.

Параметри

base

Поврзана основа на настани.

cb

А callable што ќе биде повикан кога ќе пристигне нова конекција.

data

Прилагодени кориснички податоци прикачени на cb.

flags

е еднаков на бројот на сигналот. EventListener::OPT_* константи. Види Константи на EventListener.

backlog

Ја контролира максималната дозволена бројка на чекачки конекции што мрежниот стек треба да дозволи да чекаат во состојба што сè уште не е прифатена во секое време; видете ја документацијата за вашиот систем listen функција за повеќе детали. Ако backlog е негативно, Libevent се обидува да избере добра вредност за backlog ; ако е нула, Event претпоставува дека listen веќе е повикан на сокетот (target).

target

Може да биде стринг, ресурс од сокет или стрим поврзан со сокет. Во случај ако target е стринг, стринг ќе биде парсиран како мрежна адреса. Ќе се толкува како патека до UNIX домен сокет, ако е претставен со 'unix:', на пр. 'unix:/tmp/my.sock'.

Дневник на промени

Верзија = NULL
PECL настан 1.5.0 Додадена е поддршка за UNIX домен сокети.

Примери

Пример #1 EventListener::__construct() example

<?php
/*
* Simple echo server based on libevent's connection listener.
*
* Usage:
* 1) In one terminal window run:
*
* $ php listener.php 9881
*
* 2) In another terminal window open up connection, e.g.:
*
* $ nc 127.0.0.1 9881
*
* 3) start typing. The server should repeat the input.
*/

class MyListenerConnection {
private
$bev, $base;

public function
__destruct() {
$this->bev->free();
}

public function
__construct($base, $fd) {
$this->base = $base;

$this->bev = new EventBufferEvent($base, $fd, EventBufferEvent::OPT_CLOSE_ON_FREE);

$this->bev->setCallbacks(array($this, "echoReadCallback"), NULL,
array(
$this, "echoEventCallback"), NULL);

if (!
$this->bev->enable(Event::READ)) {
echo
"Failed to enable READ\n";
return;
}
}

public function
echoReadCallback($bev, $ctx) {
// Copy all the data from the input buffer to the output buffer

// Variant #1
$bev->output->addBuffer($bev->input);

/* Variant #2 */
/*
$input = $bev->getInput();
$output = $bev->getOutput();
$output->addBuffer($input);
*/
}

public function
echoEventCallback($bev, $events, $ctx) {
if (
$events & EventBufferEvent::ERROR) {
echo
"Error from bufferevent\n";
}

if (
$events & (EventBufferEvent::EOF | EventBufferEvent::ERROR)) {
//$bev->free();
$this->__destruct();
}
}
}

class
MyListener {
public
$base,
$listener,
$socket;
private
$conn = array();

public function
__destruct() {
foreach (
$this->conn as &$c) $c = NULL;
}

public function
__construct($port) {
$this->base = new EventBase();
if (!
$this->base) {
echo
"Couldn't open event base";
exit(
1);
}

// Variant #1
/*
$this->socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if (!socket_bind($this->socket, '0.0.0.0', $port)) {
echo "Unable to bind socket\n";
exit(1);
}
$this->listener = new EventListener($this->base,
array($this, "acceptConnCallback"), $this->base,
EventListener::OPT_CLOSE_ON_FREE | EventListener::OPT_REUSEABLE,
-1, $this->socket);
*/

// Variant #2
$this->listener = new EventListener($this->base,
array(
$this, "acceptConnCallback"), $this->base,
EventListener::OPT_CLOSE_ON_FREE | EventListener::OPT_REUSEABLE, -1,
"0.0.0.0:$port");

if (!
$this->listener) {
echo
"Couldn't create listener";
exit(
1);
}

$this->listener->setErrorCallback(array($this, "accept_error_cb"));
}

public function
dispatch() {
$this->base->dispatch();
}

// This callback is invoked when there is data to read on $bev
public function acceptConnCallback($listener, $fd, $address, $ctx) {
// We got a new connection! Set up a bufferevent for it. */
$base = $this->base;
$this->conn[] = new MyListenerConnection($base, $fd);
}

public function
accept_error_cb($listener, $ctx) {
$base = $this->base;

fprintf(STDERR, "Got an error %d (%s) on the listener. "
."Shutting down.\n",
EventUtil::getLastSocketErrno(),
EventUtil::getLastSocketError());

$base->exit(NULL);
}
}

$port = 9808;

if (
$argc > 1) {
$port = (int) $argv[1];
}
if (
$port <= 0 || $port > 65535) {
exit(
"Invalid port");
}

$l = new MyListener($port);
$l->dispatch();
?>

Белешки од корисници 1 белешка

info-phpnet на ch2o dot info
пред 11 години
Warning EventListener::OPT_CLOSE_ON_FREE is forced when you transmit a "target" string.

The only way to not set EventListener::OPT_CLOSE_ON_FREE is to bind the socket before creating EventListener and use this socekt as "target".
На оваа страница

Автоматски outline од активната документација.

Насловите ќе се појават тука по вчитување.

Попрегледно читање

Примерите, changelog табелите и user notes се визуелно издвоени за да не се губат во долгата содржина.

Брз совет Користи го outline-от Скокни директно на главните секции од активната страница.
Извор Оригиналниот линк останува достапен Кога ти треба целосен upstream context, отвори го PHP.net во нов tab.