pbergman / curl-multi
一个简单的curl多请求处理包装器
1.2.1
2019-10-16 11:50 UTC
Requires
- php: ^7.1
- ext-curl: *
This package is auto-updated.
Last update: 2024-08-29 12:39:10 UTC
README
这是一个围绕curl多请求处理的(轻量级)抽象层,用于处理异步请求。
该库的目的是使处理响应更加容易,同时尽可能接近curl。这应该会使API更加稳定,更容易使用(当熟悉curl时),并且与curl相关的代码更少。
提供的请求因此不会超过一个数组,就像您用 curl_setopt_array
注册的那样。因此,URL、标题等应使用curl方法 CURLOPT_URL、CURLOPT_WRITEHEADER、CURLOPT_HTTPHEADER 注册,其余的可以在这里找到。
示例
use PBergman\CurlMulti\MultiHandler;
use PBergman\CurlMulti\Request;
$null = fopen("/dev/null", "w");
$handler = new MultiHandler(
new Request([
CURLOPT_URL => "http://httpstat.us/200?sleep=5000",
CURLOPT_FILE => $null,
]),
new Request([
CURLOPT_URL => "http://httpstat.us/404",
CURLOPT_FILE => $null,
])
);
try {
foreach ($handler->getResponse() as $response) {
printf(
"request '%s' finished with code %d in %0.2fs\n",
$response->getInfo(CURLINFO_EFFECTIVE_URL),
$response->getInfo(CURLINFO_RESPONSE_CODE),
$response->getInfo(CURLINFO_TOTAL_TIME)
);
}
} finally {
// register cleanup
$handler->close();
}
应该给出以下输出
request 'http://httpstat.us/404' finished with code 404 in 0.45s
request 'http://httpstat.us/200?sleep=5000' finished with code 200 in 5.49s
公共API
__construct(RequestInterface ...$request): MultiHandler
MultiHandler构造函数接受请求,因此您可以在创建新实例时注册您的请求。
(new MultiHandler(
new Request([
CURLOPT_URL => "http://httpstat.us/200?sleep=5000",
CURLOPT_FILE => $null,
]),
new Request([
CURLOPT_URL => "http://httpstat.us/404",
CURLOPT_FILE => $null,
])
))->wait();
setOptions(array $options) :bool
为多请求处理设置选项
addOption(int $key, $value) :bool
为多请求处理设置选项
add(RequestInterface $request): MultiHandler
将请求添加到定义的实例。
defer(): void
注册关闭函数以供关闭时使用。
init(): void
将设置curl多处理程序,这在创建新实例时将被调用,并在调用关闭方法时可能很有用。
getResponse(): \Generator|ResponseInterface[]
返回一个完成的请求和/或阻塞,直到有一个完成。
wait() : array||ResponseInterface[]
等待所有请求完成