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

使用示例

  1. 在文件中,只需在页面顶部包含 Arch\MultiCurl\MultiCurl
<?php

use Arch\MultiCurl\MultiCurl;

?>
  1. 实例化库并调用可用方法
<?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); 
});

选项

  1. new MultiCurl( $urls, $perRequest ) 接受两个参数进行初始配置。
  • $urls = (必需)。URL 数组/端点数组
  • $perRequest = (可选)。指定每条请求的数据量(长度),默认为 5。此配置仅适用于批量请求,因为 curl 操作的默认选项是批量而不是请求整个 URL 集合。您可以更改此选项,请参阅以下部分。
  1. 通过调用 setBatchOperation() 方法更改 curl 的默认操作,无论是批量请求还是一次性请求,默认为 true,表示批量请求操作。
$curlMulti = new MultiCurl( $urls, $perRequest );
$curlMulti->setBatchOperation( false );
$result = $curlMulti->execute();
print_r( $result );
  1. 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); 
});