您已经安装了新版本的扩展,它使用完全不同的 API。我仍然不知道它是如何工作的,但我会更新我知道的答案。新版本的文档可以在以下位置找到http://devel-m6w6.rhcloud.com/mdref/http http://devel-m6w6.rhcloud.com/mdref/http.
要安装旧版本,请先卸载新版本,然后执行
pecl install http://pecl.php.net/get/pecl_http-1.7.6.tgz
更新:这里是文档中的两个示例,两者都应该运行良好:
一个请求(可以在http://devel-m6w6.rhcloud.com/mdref/http/Client/enqueue http://devel-m6w6.rhcloud.com/mdref/http/Client/enqueue):
<?php
(new http\Client)->enqueue(new http\Client\Request("GET", "http://php.net"),
function(http\Client\Response $res) {
printf("%s returned %d\n", $res->getTransferInfo("effective_url"), $res->getResponseCode());
return true; // dequeue
})->send();
多个请求(可以在http://devel-m6w6.rhcloud.com/mdref/http/Client/once http://devel-m6w6.rhcloud.com/mdref/http/Client/once):
<?php
$client = new http\Client;
$client->enqueue(new http\Client\Request("HEAD", "http://php.net"));
$client->enqueue(new http\Client\Request("HEAD", "http://pecl.php.net"));
$client->enqueue(new http\Client\Request("HEAD", "http://pear.php.net"));
printf("Transfers ongoing");
while ($client->once()) {
// do something else here while the network transfers are busy
printf(".");
// and then call http\Client::wait() to wait for new input
$client->wait();
}
printf("\n");
while ($res = $client->getResponse()) {
printf("%s returned %d\n", $res->getTransferInfo("effective_url"),
$res->getResponseCode());
}
在这两个示例中,您都可以使用$res->getBody()
返回响应的正文。
我无法测试这些例子,但我听说其他人认为它们有效。