从多个端点异步请求获取第一个数组
Get first array from multiples endpoints async request
我配置了 guzzle,它目前使用 getAsync 和 4 个 url promise。该数据的return带有2个数组,格式如下。
我的问题是,如何将第一个变量分成两个变量,第一个只是第一个数组?在此示例中,它将是大小为 3154 的整个数组,而在另一个变量中,它将是大小为 10297
的整个数组
狂欢
$requests = [
getenv('apiSavingNew'),
getenv('apiSavingOld'),
];
$promises = (function () use ($requests) {
$client = new Client([
'verify' => false
]);
foreach ($requests as $request) {
yield $client->getAsync($request);
}
})();
$eachPromise = new EachPromise($promises, [
'concurrency' => 2,
'fulfilled' => function (Response $response) {
if ($response->getStatusCode() == 200) {
$request = json_decode($response->getBody());
$firstRequest = // first array here
$secondRequest = // second array here
}
},
'rejected' => function (RequestException $e) {
echo $e->getMessage();
}
]);
$eachPromise->promise()->wait();
Return 大口答应
array (size=3154)
0 =>
object(stdClass)[11532]
public 'id' => string '57a64bb0-1c6a-11ec-bfd3-173b9227de8c' (length=36)
public 'createdAt' => string '2021-09-23T12:32:40.427Z' (length=24)
public 'data' => string '2021-09-22T00:00:00.000Z' (length=24)
public 'dataFim' => string '2021-10-22T00:00:00.000Z' (length=24)
public 'valor' => string '0.30120' (length=7)
public 'serieTemporalId' => string 'a43978f1-7fd4-4550-9907-106474e64ee4' (length=36)
public 'acumuladoAno' => null
public 'acumulado12Meses' => null
1 =>
object(stdClass)[11539]
public 'id' => string '57a49e00-1c6a-11ec-bfd3-173b9227de8c' (length=36)
public 'createdAt' => string '2021-09-23T12:32:40.416Z' (length=24)
public 'data' => string '2021-09-21T00:00:00.000Z' (length=24)
public 'dataFim' => string '2021-10-21T00:00:00.000Z' (length=24)
public 'valor' => string '0.30120' (length=7)
public 'serieTemporalId' => string 'a43978f1-7fd4-4550-9907-106474e64ee4' (length=36)
public 'acumuladoAno' => null
public 'acumulado12Meses' => null
more elements...
array (size=10297)
0 =>
object(stdClass)[11545]
public 'id' => string '54f70a30-1c6a-11ec-bfd3-173b9227de8c' (length=36)
public 'createdAt' => string '2021-09-23T12:32:35.923Z' (length=24)
public 'data' => string '2021-09-22T00:00:00.000Z' (length=24)
public 'dataFim' => string '2021-10-22T00:00:00.000Z' (length=24)
public 'valor' => string '0.50000' (length=7)
public 'serieTemporalId' => string 'ec940ca2-7da8-4a75-ae7b-d90244797b65' (length=36)
public 'acumuladoAno' => null
public 'acumulado12Meses' => null
1 =>
object(stdClass)[11557]
public 'id' => string '54f3fcf0-1c6a-11ec-bfd3-173b9227de8c' (length=36)
public 'createdAt' => string '2021-09-23T12:32:35.903Z' (length=24)
public 'data' => string '2021-09-21T00:00:00.000Z' (length=24)
public 'dataFim' => string '2021-10-21T00:00:00.000Z' (length=24)
public 'valor' => string '0.50000' (length=7)
public 'serieTemporalId' => string 'ec940ca2-7da8-4a75-ae7b-d90244797b65' (length=36)
public 'acumuladoAno' => null
public 'acumulado12Meses' => null
more elements...
我没有完全理解你的要求是什么?但我仍然希望这可能有所帮助。
您可以将第二个参数添加到 function in fulfilled as $index 并将其添加到 $results 空数组的单独变量中。
$results = [];
$requests = [
getenv('apiSavingNew'),
getenv('apiSavingOld'),
];
$promises = (function () use ($requests) {
$client = new Client([
'verify' => false
]);
foreach ($requests as $request) {
yield $client->getAsync($request);
}
})();
$eachPromise = new EachPromise($promises, [
'concurrency' => 2,
'fulfilled' => function (Response $response, $index) {
if ($response->getStatusCode() == 200) {
//$request = json_decode($response->getBody());
$results[$index] = json_decode($response->getBody(), true);
}
},
'rejected' => function (RequestException $e, $index) {
echo $e->getMessage();
}
]);
$eachPromise->promise()->wait();
我配置了 guzzle,它目前使用 getAsync 和 4 个 url promise。该数据的return带有2个数组,格式如下。
我的问题是,如何将第一个变量分成两个变量,第一个只是第一个数组?在此示例中,它将是大小为 3154 的整个数组,而在另一个变量中,它将是大小为 10297
的整个数组狂欢
$requests = [
getenv('apiSavingNew'),
getenv('apiSavingOld'),
];
$promises = (function () use ($requests) {
$client = new Client([
'verify' => false
]);
foreach ($requests as $request) {
yield $client->getAsync($request);
}
})();
$eachPromise = new EachPromise($promises, [
'concurrency' => 2,
'fulfilled' => function (Response $response) {
if ($response->getStatusCode() == 200) {
$request = json_decode($response->getBody());
$firstRequest = // first array here
$secondRequest = // second array here
}
},
'rejected' => function (RequestException $e) {
echo $e->getMessage();
}
]);
$eachPromise->promise()->wait();
Return 大口答应
array (size=3154)
0 =>
object(stdClass)[11532]
public 'id' => string '57a64bb0-1c6a-11ec-bfd3-173b9227de8c' (length=36)
public 'createdAt' => string '2021-09-23T12:32:40.427Z' (length=24)
public 'data' => string '2021-09-22T00:00:00.000Z' (length=24)
public 'dataFim' => string '2021-10-22T00:00:00.000Z' (length=24)
public 'valor' => string '0.30120' (length=7)
public 'serieTemporalId' => string 'a43978f1-7fd4-4550-9907-106474e64ee4' (length=36)
public 'acumuladoAno' => null
public 'acumulado12Meses' => null
1 =>
object(stdClass)[11539]
public 'id' => string '57a49e00-1c6a-11ec-bfd3-173b9227de8c' (length=36)
public 'createdAt' => string '2021-09-23T12:32:40.416Z' (length=24)
public 'data' => string '2021-09-21T00:00:00.000Z' (length=24)
public 'dataFim' => string '2021-10-21T00:00:00.000Z' (length=24)
public 'valor' => string '0.30120' (length=7)
public 'serieTemporalId' => string 'a43978f1-7fd4-4550-9907-106474e64ee4' (length=36)
public 'acumuladoAno' => null
public 'acumulado12Meses' => null
more elements...
array (size=10297)
0 =>
object(stdClass)[11545]
public 'id' => string '54f70a30-1c6a-11ec-bfd3-173b9227de8c' (length=36)
public 'createdAt' => string '2021-09-23T12:32:35.923Z' (length=24)
public 'data' => string '2021-09-22T00:00:00.000Z' (length=24)
public 'dataFim' => string '2021-10-22T00:00:00.000Z' (length=24)
public 'valor' => string '0.50000' (length=7)
public 'serieTemporalId' => string 'ec940ca2-7da8-4a75-ae7b-d90244797b65' (length=36)
public 'acumuladoAno' => null
public 'acumulado12Meses' => null
1 =>
object(stdClass)[11557]
public 'id' => string '54f3fcf0-1c6a-11ec-bfd3-173b9227de8c' (length=36)
public 'createdAt' => string '2021-09-23T12:32:35.903Z' (length=24)
public 'data' => string '2021-09-21T00:00:00.000Z' (length=24)
public 'dataFim' => string '2021-10-21T00:00:00.000Z' (length=24)
public 'valor' => string '0.50000' (length=7)
public 'serieTemporalId' => string 'ec940ca2-7da8-4a75-ae7b-d90244797b65' (length=36)
public 'acumuladoAno' => null
public 'acumulado12Meses' => null
more elements...
我没有完全理解你的要求是什么?但我仍然希望这可能有所帮助。 您可以将第二个参数添加到 function in fulfilled as $index 并将其添加到 $results 空数组的单独变量中。
$results = [];
$requests = [
getenv('apiSavingNew'),
getenv('apiSavingOld'),
];
$promises = (function () use ($requests) {
$client = new Client([
'verify' => false
]);
foreach ($requests as $request) {
yield $client->getAsync($request);
}
})();
$eachPromise = new EachPromise($promises, [
'concurrency' => 2,
'fulfilled' => function (Response $response, $index) {
if ($response->getStatusCode() == 200) {
//$request = json_decode($response->getBody());
$results[$index] = json_decode($response->getBody(), true);
}
},
'rejected' => function (RequestException $e, $index) {
echo $e->getMessage();
}
]);
$eachPromise->promise()->wait();