PHP
事件 | Event

EventHttp::setCallback

EventHttp::setCallback

(PECL event >= 1.4.0-beta)

EventHttp :: setCallback - 为指定的 URI 设置回调

描述

public void EventHttp::setCallback ( string $path , string $cb [, string $arg ] )

为指定的 URI 设置回调。

参数

path

调用回调的路径。

cb

根据请求调用的回调可调用path。它应该匹配以下原型:

void callback ([ EventHttpRequest $req = NULL [, mixed $arg = NULL ]] )

req

EventHttpRequest 对象。

arg

自定义数据。

`arg`

自定义数据。

返回值

TRUE成功返回。否则FALSE

例子

示例#1 EventHttp :: setCallback()示例

<?php /*  * Simple HTTP server.  *  * To test it:  * 1) Run it on a port of your choice, e.g.:  * $ php examples/http.php 8010  * 2) In another terminal connect to some address on this port  * and make GET or POST request(others are turned off here), e.g.:  * $ nc -t 127.0.0.1 8010  * POST /about HTTP/1.0  * Content-Type: text/plain  * Content-Length: 4  * Connection: close  * (press Enter)  *  * It will output  * a=12  * HTTP/1.0 200 OK  * Content-Type: text/html; charset=ISO-8859-1  * Connection: close  *  * 3) See what the server outputs on the previous terminal window.  */ function _http_dump($req, $data) {     static $counter      = 0;     static $max_requests = 2;     if (++$counter >= $max_requests)  {         echo "Counter reached max requests $max_requests. Exiting\n";         exit(     }     echo __METHOD__, " called\n";     echo "request:"; var_dump($req     echo "data:"; var_dump($data     echo "\n===== DUMP =====\n";     echo "Command:", $req->getCommand(), PHP_EOL;     echo "URI:", $req->getUri(), PHP_EOL;     echo "Input headers:"; var_dump($req->getInputHeaders()     echo "Output headers:"; var_dump($req->getOutputHeaders()     echo "\n >> Sending reply ...";     $req->sendReply(200, "OK"     echo "OK\n";     echo "\n >> Reading input buffer ...\n";     $buf = $req->getInputBuffer(     while ($s = $buf->readLine(EventBuffer::EOL_ANY)) {         echo $s, PHP_EOL;     }     echo "No more data in the buffer\n"; } function _http_about($req) {     echo __METHOD__, PHP_EOL;     echo "URI: ", $req->getUri(), PHP_EOL;     echo "\n >> Sending reply ...";     $req->sendReply(200, "OK"     echo "OK\n"; } function _http_default($req, $data) {     echo __METHOD__, PHP_EOL;     echo "URI: ", $req->getUri(), PHP_EOL;     echo "\n >> Sending reply ...";     $req->sendReply(200, "OK"     echo "OK\n"; } $port = 8010; if ($argc > 1) {     $port = (int) $argv[1]; } if ($port <= 0 || $port > 65535) {     exit("Invalid port" } $base = new EventBase( $http = new EventHttp($base $http->setAllowedMethods(EventHttpRequest::CMD_GET | EventHttpRequest::CMD_POST $http->setCallback("/dump", "_http_dump", array(4, 8) $http->setCallback("/about", "_http_about" $http->setDefaultCallback("_http_default", "custom data value" $http->bind("0.0.0.0", 8010 $base->loop( ?>

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

a=12 HTTP/1.0 200 OK Content-Type: text/html; charset=ISO-8859-1 Connection: close

也可以看看

  • EventHttp :: setDefaultCallback() - 设置默认回调来处理未被特定回调捕获的请求

← EventHttp::setAllowedMethods

EventHttp::setDefaultCallback →