DiamondDog: So lange in Datei schreiben biß bestimmte größe erreicht ist?

Hallo Leute,
ich würd gerne in eine txt so lange ein Zeichen schreiben, biß sie eine bestimmte größer erreicht hat, leider hab ich dabei ein paar Probleme das das Script die Datei größer macht als es soll. Hoffe mir kann jemand Zeigen wo mein Denkfehler liegt.
Hier der Code:

  
<?php  
$datei = 'test.txt';  
$dateimax = '600'; //Byte  
$text = "#";  
  
function write(){  
global $datei, $text;  
  $textdatei = fopen ($datei, "a+");  
  fwrite($textdatei, $text);  
  fclose($textdatei);  
}  
  
if(!file_exists($datei)) write();  
  
$groesse = filesize($datei);  
while($groesse < $dateimax){  
  write();  
  $groesse = filesize($datei);  
  if($groesse >= $dateimax) echo 'Groeße erreicht!';  
}  
?>  

Mfg Dog

  1. Hi!

    ich würd gerne in eine txt so lange ein Zeichen schreiben, biß sie eine bestimmte größer erreicht hat, leider hab ich dabei ein paar Probleme das das Script die Datei größer macht als es soll.

    Welche Probleme sind das genau? Hast du Kontrollausgaben der Variablen gemacht und festgestellt, an welcher Stelle Wunsch und Wirklichkeit nicht übereinstimmen?

    Hoffe mir kann jemand Zeigen wo mein Denkfehler liegt.

    Beachte, nachdem du mit den Kontrollausgaben herausgefunden hast, welche Funktion ein nicht erwartetes Ergebnis liefert, die Hinweise auf deren Handbuchseite. Damit lässt sich das Problem lösen.

    $dateimax = '600'; //Byte

    Warum notierst du eine Zahl als String?

    Einfacher als tausend Dateioperationen wäre in deinem Fall str_repeat(), wenn es dir wirklich um eine x-fache Wiederholung eines Zeichens/Strings geht.

    Lo!

    1. Welche Probleme sind das genau? Hast du Kontrollausgaben der Variablen gemacht und festgestellt, an welcher Stelle Wunsch und Wirklichkeit nicht übereinstimmen?

      Ja aber anscheinend nicht genug sonst hätt ich ja den Fehler gefunden ^^

      $dateimax = '600'; //Byte

      Warum notierst du eine Zahl als String?

      Da hast du recht, änderung in:

        
      $dateimax = 600; //Byte  
      
      

      Einfacher als tausend Dateioperationen wäre in deinem Fall str_repeat(), wenn es dir wirklich um eine x-fache Wiederholung eines Zeichens/Strings geht.

      Naja es geht ehr um das wiederholen des Zeichens, bis eine bestimmte größe der Datei erreicht ist. Also wird mir da str_repeat() nicht viel weiterhelfen.

      1. Hi!

        Welche Probleme sind das genau? Hast du Kontrollausgaben der Variablen gemacht und festgestellt, an welcher Stelle Wunsch und Wirklichkeit nicht übereinstimmen?
        Ja aber anscheinend nicht genug sonst hätt ich ja den Fehler gefunden ^^

        Das muss aber ganz wenig gewesen sein. Was hast du für ein Problem? Das Schreiben bricht nicht ab. Was ist deine Abbruchbedingung? $groesse wird gegen $dateimax vergleichen. $dateimax ist ein feststehender Wert. Also bleibt $groesse als zu überprüfender Wert übrig. Was stellst du beim Kontrollieren fest? $groesse ändert sich nicht. Wo kommt der Wert in $groesse her? ...

        Lo!

        1. Das muss aber ganz wenig gewesen sein. Was hast du für ein Problem? Das Schreiben bricht nicht ab. Was ist deine Abbruchbedingung? $groesse wird gegen $dateimax vergleichen. $dateimax ist ein feststehender Wert. Also bleibt $groesse als zu überprüfender Wert übrig. Was stellst du beim Kontrollieren fest? $groesse ändert sich nicht. Wo kommt der Wert in $groesse her? ...

          Ok also ich weiß jetzt das die while schleife nicht ganz richtig ist, weil $groesse dort immer den selben Wert hat und das erneute setzen in der Schleife nichts bringt. Nur ich versteh nicht wieso nicht es geht doch auch zb so:

            
          while($count < $zahl){  
            echo $count,", ";  
            $count++;  
          }  
          
          

          Also kann es ja nur am neuen setzen von $groesse in der Schleife liegen, nur wieso die größe dort nicht neue gesetzt wird weiß ich nicht so ganz.

          1. Hi!

            Also kann es ja nur am neuen setzen von $groesse in der Schleife liegen, nur wieso die größe dort nicht neue gesetzt wird weiß ich nicht so ganz.

            Deswegen empfahl ich dir die Lektüre der Hinweise (Notes) der Handbuchseite der Funktion, die den Wert für $groesse liefert.

            Lo!