php的异步http请求类

基于上次写的关于php的libevent扩展的应用,我实现了一个异步的http请求类。

代码在github上:https://github.com/volca/AsyncHttpClient

使用示例

如下,在request的时候能够定义请求完成之后的callback函数。


 $base
);

for($i = 0; $i < 10; $i++) {
    $client = new AsyncHttpClient($uri, $config);
    $client->request(function($result) {
        echo "Result len:";
        echo strlen($result['response']);
        // parse response with Zend_Http_Response
        $response = Zend_Http_Response::fromString($result['response']);              
        echo $response->getBody();
        echo "\n";
    });
}

event_base_loop($base);
echo "done\n";

目前的实现比较初级,只做了get方法的封装,如果需要http上传或者post,还需要另外实现。另外这个类也需要php的libevent扩展

Update 2011.11.17

将这个类修改为继承自Zend_Http_Client,这样我可以少写一些代码,顺带也实现了文件http上传以及post(未经测试),代码中的使用示例也已经更新。

9 replies on “php的异步http请求类”

  1. 立刻拿来用。
    本来设计了一个用来解藕的消息系统,这下连给消息系统发消息都是异步的,彻底解脱了。

  2. 直接调用socket,一般情况下要等一个请求完成了再进行下一个请求,这种理论上可以同时做好几个http请求,而且可以设置请求完成之后的callback

    < ?php echo "hello world";?>
  3. hi,我看你blog很久咯,一直没留言,我问下,libevent和memcached的php扩展,你平时开发在win下面的扩展有么?

Comments are closed.