paulzi / multicurl
MultiCurl. curl_multi_init 的包装器。
v0.1.0
2016-10-14 07:59 UTC
Requires
- php: >=5.4.0
- ext-curl: *
This package is auto-updated.
Last update: 2024-09-12 22:32:03 UTC
README
curl_multi_init 的包装器。
提供两个类
- MultiCurl - 带有事件的 curl_multi_init 简单包装器
- MultiCurlQueue - MultiCurl 的扩展版本,带有请求队列、重试失败请求和多线程。
安装
通过 Composer 安装
composer require paulzi/multicurl:~0.1.0
或者添加
"paulzi/multicurl" : "~0.1.0"
到你的 composer.json
文件的 require
部分。
用法
function generateCurl($url) { $curl = curl_init(); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_HEADER, false); curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); curl_setopt($curl, CURLOPT_ENCODING, ''); return $curl; } // usage MultiCurl $request = new MultiCurlRequest(); $request->curl = generateCurl('https://google.com'); $request->onSuccess = function($request, $response, $content) { var_dump('Success', $content); }; $request->onError = function($request, $response, $content, $errCode, $errMsg) { var_dump('Error', $errMsg); }; $loader = new MultiCurl(); $loader->add($request); $loader->run(); // usage MultiCurlQueue $request1 = new MultiCurlRequest(); $request1->curl = generateCurl('https://google.com'); $request1->onSuccess = function($request, $response, $content) { var_dump('Request1 Success', $content); }; $request1->onRetry = function($request, $response, $content, $errCode, $errMsg) { var_dump('Request1 Retry', $errMsg); }; $request1->onError = function($request, $response, $content, $errCode, $errMsg) { var_dump('Request1 Error', $errMsg); }; $request2 = new MultiCurlRequest(); $request2->curl = generateCurl('http://none.noexist'); $request2->onSuccess = function($request, $response, $content) { var_dump('Request2 Success', $content); }; $request2->onRetry = function($request, $response, $content, $errCode, $errMsg) { var_dump('Request2 Retry', $errMsg); }; $request2->onError = function($request, $response, $content, $errCode, $errMsg) { var_dump('Request2 Error', $errMsg); }; $loader = new MultiCurlQueue(); $loader->threads = 2; $loader->retry = 3; $loader->run([$request1, $request2]);
文档
MultiCurl
add($request)
- 将请求添加到任务run()
- 执行请求onBefore($request)
- 在执行请求之前的事件onSuccess($request, $response, $content)
- 请求成功事件onError($request, $response, $content, $errCode, $errMsg)
- 请求错误事件onAlways($request, $response, $content)
- 总是请求事件
MultiCurlQueue
run($requests)
- 执行请求onBefore($request)
- 在执行请求之前的事件onSuccess($request, $response, $content)
- 请求成功事件onError($request, $response, $content, $errCode, $errMsg)
- 请求错误事件onAlways($request, $response, $content)
- 总是请求事件onRetry($request, $response, $content, $errCode, $errMsg, $retryIndex, $retryTotal)
- 重试请求事件
MultiCurlRequest
$curl
- curl 资源$onBefore
- 执行请求之前的回调$onSuccess
- 请求成功回调$onError
- 请求错误回调$onAlways
- 总是请求回调$onRetry
- 重试请求回调