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