From 6517a0ee1129cf7b526eeace7135196fe65a11ae Mon Sep 17 00:00:00 2001 From: Pablo Zmdl Date: Thu, 28 May 2026 12:38:01 +0200 Subject: [PATCH] Read streamed output line by line, not via buffer This way the code doesn't wait for a buffer to be filled, and we don't need to implement logic ourselves that is provided by a present library already. Signed-off-by: Pablo Zmdl --- php/src/Docker/DockerActionManager.php | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/php/src/Docker/DockerActionManager.php b/php/src/Docker/DockerActionManager.php index 85fa45f6..d961cba4 100644 --- a/php/src/Docker/DockerActionManager.php +++ b/php/src/Docker/DockerActionManager.php @@ -12,6 +12,7 @@ use AIO\Data\DataConst; use AIO\Helper\NetworkHelper; use GuzzleHttp\Client; use GuzzleHttp\Exception\RequestException; +use GuzzleHttp\Psr7\Utils; use http\Env\Response; readonly class DockerActionManager { @@ -843,22 +844,12 @@ readonly class DockerActionManager { if ($outputCallback !== null) { $body = $startResponse->getBody(); - $buffer = ''; while (!$body->eof()) { - $chunk = $body->read(1024); - $buffer .= $chunk; - while (($pos = strpos($buffer, "\n")) !== false) { - $line = substr($buffer, 0, $pos); - $buffer = substr($buffer, $pos + 1); - $line = rtrim($line, "\r"); - if ($line !== '') { - $outputCallback($line); - } + $line = rtrim(Utils::readLine($pullBody), "\r");; + if ($line !== '') { + $outputCallback($line); } } - if (trim($buffer) !== '') { - $outputCallback(trim($buffer)); - } } }