@@ -209,11 +209,7 @@ private static function schedule(self $response, array &$runningResponses): void
209
209
$ runningResponses [$ i ] = [$ response ->multi , []];
210
210
}
211
211
212
- if (null === $ response ->remaining ) {
213
- $ response ->multi ->pendingResponses [] = $ response ;
214
- } else {
215
- $ runningResponses [$ i ][1 ][$ response ->id ] = $ response ;
216
- }
212
+ $ runningResponses [$ i ][1 ][$ response ->id ] = $ response ;
217
213
218
214
if (null === $ response ->buffer ) {
219
215
// Response already completed
@@ -315,25 +311,30 @@ private static function perform(NativeClientState $multi, array &$responses = nu
315
311
return ;
316
312
}
317
313
318
- if ($ multi ->pendingResponses && \count ($ multi ->handles ) < $ multi ->maxHostConnections ) {
319
- // Open the next pending request - this is a blocking operation so we do only one of them
320
- /** @var self $response */
321
- $ response = array_shift ($ multi ->pendingResponses );
322
- $ response ->open ();
323
- $ responses [$ response ->id ] = $ response ;
324
- $ multi ->sleep = false ;
325
- self ::perform ($ response ->multi );
326
-
327
- if (null !== $ response ->handle ) {
328
- $ multi ->handles [] = $ response ->handle ;
314
+ // Create empty activity lists to tell ResponseTrait::stream() we still have pending requests
315
+ foreach ($ responses as $ i => $ response ) {
316
+ if (null === $ response ->remaining && null !== $ response ->buffer ) {
317
+ $ multi ->handlesActivity [$ i ] = [];
329
318
}
330
319
}
331
320
332
- if ($ multi ->pendingResponses ) {
333
- // Create empty activity list to tell ResponseTrait::stream() we still have pending requests
334
- $ response = $ multi ->pendingResponses [0 ];
335
- $ responses [$ response ->id ] = $ response ;
336
- $ multi ->handlesActivity [$ response ->id ] = [];
321
+ if (\count ($ multi ->handles ) >= $ multi ->maxHostConnections ) {
322
+ return ;
323
+ }
324
+
325
+ // Open the next pending request - this is a blocking operation so we do only one of them
326
+ foreach ($ responses as $ i => $ response ) {
327
+ if (null === $ response ->remaining && null !== $ response ->buffer ) {
328
+ $ response ->open ();
329
+ $ multi ->sleep = false ;
330
+ self ::perform ($ multi );
331
+
332
+ if (null !== $ response ->handle ) {
333
+ $ multi ->handles [] = $ response ->handle ;
334
+ }
335
+
336
+ break ;
337
+ }
337
338
}
338
339
}
339
340
0 commit comments