arch / multicurl
批量并行请求的 Multi Curl
v1.1.1
2016-12-30 09:27 UTC
This package is auto-updated.
Last update: 2024-09-23 13:59:13 UTC
README
批量并行请求的 Multi Curl。正如其名,您可以一次进行批量请求或并行请求。
批量请求
将分割提供的数组数据,并且分批次请求,以减少请求过程中的工作负载,而不是一次性请求。每条请求的数据数量由您自行选择。批量请求简单地将 URL 数组分割成多个部分,并逐个执行请求,直到完成。在等待下一个请求队列时,您可以提供回调以执行每个批次。
并行请求
传入整个数组数据集,并一次性请求所有数据。
安装
可以使用 composer 安装库,只需 require 它
composer require arch/multicurl
使用示例
- 在文件中,只需在页面顶部包含
Arch\MultiCurl\MultiCurl
<?php use Arch\MultiCurl\MultiCurl; ?>
- 实例化库并调用可用方法
<?php use Arch\MultiCurl\MultiCurl; $baseUrl = 'https://maps.googleapis.com/maps/api/geocode/json?'; $key = '&key=Google_Map_Keys'; $urls = array( $baseUrl . 'latlng=3.114536,101.659844'.$key, $baseUrl . 'latlng=3.084217,101.595965'.$key, $baseUrl . 'latlng=3.064248,101.437435'.$key, $baseUrl . 'latlng=3.114536,101.659844'.$key ); $perRequest = 3; // 3 endpoints per request $curlMulti = new MultiCurl( $urls, $perRequest ); $curlMulti->execute( function ( $data ) { // execute curl with callback for each request echo count($data); });
选项
new MultiCurl( $urls, $perRequest )
接受两个参数进行初始配置。
- $urls = (必需)。URL 数组/端点数组
- $perRequest = (可选)。指定每条请求的数据量(长度),默认为 5。此配置仅适用于批量请求,因为 curl 操作的默认选项是批量而不是请求整个 URL 集合。您可以更改此选项,请参阅以下部分。
- 通过调用
setBatchOperation()
方法更改 curl 的默认操作,无论是批量请求还是一次性请求,默认为true
,表示批量请求操作。
$curlMulti = new MultiCurl( $urls, $perRequest ); $curlMulti->setBatchOperation( false ); $result = $curlMulti->execute(); print_r( $result );
- 在
execute( fn(x) )
中提供回调,以执行每个批次的请求完成。例如,我们有 3 个批量请求,提供的回调将在每个批次中运行 3 次,每次运行都带有从端点接收到的结果。此回调接受一个参数,即从端点接收到的结果集。此回调是可选的。
- $data = 从端点接收到的结果
// As example, we have 3 batch requests $curlMulti = new MultiCurl( $urls, $perRequest ); $curlMulti->execute( function ( $data ) { // execute curl with callback for each request, will run 3 times echo count($data); });