AunoAsyncHttp is a PHP class for handling multiple http requests asynchronously in a non-blocking manner.
Sample usage of AunoAsyncHttpMulti:
/* Create a new AunoAsyncHttpMulti object, you generally need only one
* of these in one application, and might want to implement the
* functionality yourself using the basic AunoAsyncHttp objects.
*/
$http = new AunoAsyncHttpMulti;
/* Create two http requests, arguments are
* url, callback-object, callback-method, optional arguments
*/
$http->get("http://www.funcom.com/", $ob=NULL, "http_cb", "r1");
$http->get("http://auno.org/", $ob=NULL, "http_cb", "r2");
/* Main event loop, keep going as long as we have valid event
* sources available (which are just the two http requests in
* this example. In a real application the AOChat socket would
* be appended to the $fdr array before select()
* /
for(;;)
{
/* $http->fdr and $http->fdw contain arrays of sockets that the
* AunoAsyncHttpMulti object is holding and wants to get events for.
* 'fdr' is list of sockets that are waiting for data and 'fdw' is
* list of sockets that we want to write data to (connecting)
*/
$fdr = $http->fdr;
$fdw = $http->fdw;
/* Bail out when we are out of event sources */
if(sizeof($fdr) + sizeof($fdw) == 0)
{
break;
}
if(socket_select($fdr, $fdw, $fde=NULL, 10))
{
/* Ok, something has happened, $fdr and $fdw contain the lists of
* sockets that received events, give them to AunoAsyncHttpMulti
* for processing.
*/
$http->iteration($fdr, $fdw);
}
}
/* This is the callback function we specify above. It gets called
* when the http requests have been completed.
* Argument list is: http-body, http-header, optional arguments that
* were given when the request was made (r1 for funcom and r2 for
* auno.org in this case.
*/
function http_cb($body, $head, $args)
{
echo "Completed HTTP request $args\n";
var_dump($head);
var_dump($body);
}
Revision history:
1.3: First public release