| | mixed $base |
| | ): Generator { |
| | - $stream = CompressionStream::createInflater(); |
| | - $state = 0; |
| | - $buffer = ''; |
| | - $isFile = is_resource( $base ); |
| | + $stream = CompressionStream::createInflater(); |
| | + $state = 0; |
| | + $buffer = ''; |
| | + $yieldBuffer = ''; |
| | + $isFile = is_resource( $base ); |
| | |
| | foreach( $stream->stream( $handle ) as $data ) { |
 |
| | $rem = 0; |
| | } else { |
| | - yield $slc; |
| | + $yieldBuffer .= $slc; |
| | + $rem -= strlen( $slc ); |
| | |
| | - $rem -= strlen( $slc ); |
| | + if( strlen( $yieldBuffer ) >= 8192 ) { |
| | + yield $yieldBuffer; |
| | + |
| | + $yieldBuffer = ''; |
| | + } |
| | } |
| | } |
| | } else { |
| | - yield substr( $base, $info['off'], $info['len'] ); |
| | + $yieldBuffer .= substr( $base, $info['off'], $info['len'] ); |
| | + |
| | + if( strlen( $yieldBuffer ) >= 8192 ) { |
| | + yield $yieldBuffer; |
| | + |
| | + $yieldBuffer = ''; |
| | + } |
| | } |
| | |
 |
| | |
| | if( !$doneBuffer ) { |
| | - yield substr( $buffer, 1, $ln ); |
| | + $yieldBuffer .= substr( $buffer, 1, $ln ); |
| | + $buffer = substr( $buffer, 1 + $ln ); |
| | |
| | - $buffer = substr( $buffer, 1 + $ln ); |
| | + if( strlen( $yieldBuffer ) >= 8192 ) { |
| | + yield $yieldBuffer; |
| | + |
| | + $yieldBuffer = ''; |
| | + } |
| | } |
| | } |
| | } |
| | } |
| | } |
| | + } |
| | + |
| | + if( $yieldBuffer !== '' ) { |
| | + yield $yieldBuffer; |
| | } |
| | } |