文字

EventHttp::setCallback

(PECL event >= 1.4.0-beta)

EventHttp::setCallbackSets a callback for specified URI

说明

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

Sets a callback for specified URI.

参数

path

The path for which to invoke the callback.

cb

The callback callable that gets invoked on requested path . It should match the following prototype:

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

req

EventHttpRequest object.

arg

Custom data.

arg

Custom data.

返回值

Returns TRUE on success. Otherwise FALSE .

范例

Example #1 EventHttp::setCallback() example

<?php


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  <=  ||  $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() - Sets default callback to handle requests that are not caught by specific callbacks
上一篇: 下一篇: