©
本文档使用 PHP中文网手册 发布
(PECL event >= 1.4.0-beta)
EventHttp::setCallback — Sets a callback for specified URI
$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:
$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 <= 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