Byte Größe der gesendeten Daten

Gunah

Erfahrenes Mitglied
Servus,

ich suche gearde eine möglichkeit, wie ich die Datengröße der per echo() gesendeten Daten herrausfinden kann...

Die ganzen Daten werden vorher mit:
PHP:
<?php

echo 'Daten1';
echo 'Daten2';

 /* hier sollen die Dateigrößen mit fopen() in eine Datei geschrieben werden...
gibt es hier irgendeine variante?*/
?>

Gruß
Gunah
 
Du pufferst die Daten mit den Funktionen zur Ausgabekontrolle und zählst dann einfach mit [phpf]strlen[/phpf] die Bytes die gesendet wurden.

Das kannst du dann auch noch schön formatieren, z. B. mit einer solchen Funktion:

PHP:
<?php
  function byte_convert($bytes)
  {
    $symbol = array('B', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB');

    $exp = 0;
    $converted_value = 0;
    if( $bytes > 0 )
    {
      $exp = floor( log($bytes)/log(1024) );
      $converted_value = ( $bytes/pow(1024,floor($exp)) );
    }

    return sprintf( '%.2f '.$symbol[$exp], $converted_value );
  }
?>

Aus den Kommentaren von [phpf]filesize[/phpf] von php.net genommen.
 
danke für deine Antwort...

aber ich suche eine möglichkeit ein apache log zu schreiben per PHP...

habe folgendes gefunden: http://serpedon.de/PHP-Schnipsel/ApacheLog-per-Script-erstellen/

dort ist es allerdings so, das keine Byte größe angeben werden kann geht dieses nur per outcontrol oder auch über eine andere variante?

Gruß
Gunah

EDIT: //
PHP:
<?php

    function ob_response_length( $buffer )
    {
        $len = ob_get_length();
        $wildcard = '{RESPONSE_LENGTH}';
        if( $count = substr_count($buffer, $wildcard) ) {
            $len = $len + (strlen($len) - strlen($wildcard)) * $count;
            header('Content-Length: '.$len);
            return str_replace($wildcard, $len, $buffer);
        }
        return false;
    }

    ob_start('ob_response_length');
    echo 'Gesamtgröße: {RESPONSE_LENGTH} Byte';
    phpinfo();

?>
 
Zuletzt bearbeitet:
Zurück