Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

Thema: fwrite schreibt doppelt

  1. #1
    Fortgeschrittene/r Avatar von SpeedFire
    Registriert seit
    01.07.2008
    Ort
    Meilsdorf
    Alter
    23
    Beiträge
    185
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard fwrite schreibt doppelt

    der titel sagt schon alles
    ich möchte ein Log File schreiben
    PHP-Code:
    $file fopen ('logs/'.$date.'.log''a');
    fwrite($file$log);    
    fclose($file); 
    eigentlich geht alles
    das Problem ist das nur das fwrite den Eintrag 2 mal schreibt
    ich hab viel ausprobiert zb. mit sleep(10); und hab dabei festgestellt
    das wirklich nur das fwrite Kommando doppelt läuft.

    wie schaffe ich das das Kommando nur einmal schreibt
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!
    br:^ n4:| ie:% mo:} va:} de:> zu:) fl:| ss:} ls:[ js:|
    Dieser Text ist nicht sinnlos, sondern sagt viel über mich aus!

  2. #2
    Bandit
    Gast

    Standard AW: fwrite schreibt doppelt

    Wie sollen wir das bei dem Quellcode-Ausschnitt und den Infos beurteilen??? Fakt ist aber, dass PHP nicht von alleine alles doppelt reinschreibt.

    Richtig debuggen
    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL); und ini_set("display_errors", true);
    3. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    4. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
    5. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

  3. #3
    Fortgeschrittene/r
    Themenstarter
    Avatar von SpeedFire
    Registriert seit
    01.07.2008
    Ort
    Meilsdorf
    Alter
    23
    Beiträge
    185
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: fwrite schreibt doppelt

    ich hab es schon eingegrenzt und zwar auf diesen kleinen bereich
    deswegen ist es ja so merkwürdig

    als ich sleep(10); nach dem fwrite eingefügt habe hat er zuerst eine und nach 10 sekunden die andere zeile eigefügt.
    ich hab auch mein script duchsucht und mit einem counter überprüft ob es nich doppelt aufgerufen wird
    nichts... es muss an diesem befehl liegen
    ich hab auch mal gegoogelt und offenbar haben auch andere so ein ähnliches Problem.
    br:^ n4:| ie:% mo:} va:} de:> zu:) fl:| ss:} ls:[ js:|
    Dieser Text ist nicht sinnlos, sondern sagt viel über mich aus!

  4. #4
    Bandit
    Gast

    Standard AW: fwrite schreibt doppelt

    es muss an diesem befehl liegen
    Das glaube ich nicht.

  5. #5
    Fortgeschrittene/r
    Themenstarter
    Avatar von SpeedFire
    Registriert seit
    01.07.2008
    Ort
    Meilsdorf
    Alter
    23
    Beiträge
    185
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: fwrite schreibt doppelt

    ich glaube es eigentlich auch nicht,
    doch ich bin nicht der einzige!
    br:^ n4:| ie:% mo:} va:} de:> zu:) fl:| ss:} ls:[ js:|
    Dieser Text ist nicht sinnlos, sondern sagt viel über mich aus!

  6. #6
    Bandit
    Gast

    Standard AW: fwrite schreibt doppelt

    Ich glaube immer noch, dass es an deinem Script liegt. Sollte es aber doch ein PHP-Bug sein, dann solltest du hier was zu finden: http://bugs.php.net/search.php

    Wenn es an PHP liegt, müsstest du hier auch den Text doppelt in der Datei haben:
    PHP-Code:
    <?php
       $text 
    "Dies ist ein Text\n";
     
       
    $file fopen ('test.log''a+');
       
    fwrite($file$text);    
       
    fclose($file);  
    ?>
    Geändert von bandit600 (15.10.2008 um 23:12 Uhr)

  7. #7
    Fortgeschrittene/r
    Themenstarter
    Avatar von SpeedFire
    Registriert seit
    01.07.2008
    Ort
    Meilsdorf
    Alter
    23
    Beiträge
    185
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: fwrite schreibt doppelt

    du kannst dir gerne den rest meines Scripts ansehen
    $error ist "/testfehler"
    PHP-Code:
    <?php
    if(isset($error)){
        
    $error explode('/'$error);
        if(
    is_writable('logs/')){
            if(!isset(
    $timestamp)){$timestamp time();}
            
    $e_dayword = array('mon','tue','wed','thu','fri','sat','sun');
            
    $e_date date("d.m.Y"$timestamp);
            
    $errorlog ' - '.$error[1];
            for(
    $count 2; isset($error[$count]); $count++){$errorlog ' & '.$error[$count];}
            
    $file fopen ('logs/'.$e_date.'.log''ab');
            
    $write $e_dayword[date("w"$timestamp)].' '.$e_date.' '.date("H:i.s"$timestamp).$errorlog.'
    '
    ;
            
    fwrite($file$write);
            
    fclose($file);
        }else{
    $nerror 'The directory "logs"'." aren't wirtable";}
        
        echo 
    '
          <div class="error">
            <b>error:</b>
            <p>'
    .$error[1].'</p>';
        for(
    $count 2; isset($error[$count]); $count++){
            echo 
    '<br />
            <b>error:</b>
            <p>'
    .$error[$count].'</p>';
        }
        if(isset(
    $nerror)){
            echo 
    '<br />
            <b>error:</b>
            <p>'
    .$nerror.'<br />
              please tell us about this error</p>'
    ;
        }
        echo 
    '</div>';
    }
    ?>
    das ist der gesamte teil des Codes der den roten Balken
    in dem die Fehler stehen schreibt und die log Datei erstellt
    der Inhalt des Logs ist wie folgt:
    Code:
    thu 15.10.2008 22:25.38 - testfehler
    thu 15.10.2008 22:25.38 - testfehler
    mehr infos hab ich nicht
    siehst du einen Fehler?
    br:^ n4:| ie:% mo:} va:} de:> zu:) fl:| ss:} ls:[ js:|
    Dieser Text ist nicht sinnlos, sondern sagt viel über mich aus!

  8. #8
    Bandit
    Gast

    Standard AW: fwrite schreibt doppelt

    du kannst dir gerne den rest meines Scripts ansehen
    das ist der gesamte teil des Codes
    Also wieder nicht das komplette Script.

    Hast du nachgesehen, ob das ein bekannter PHP-Bug sein könnte? Hast du mein kleiner Testscript ausprobiert? Du hast "Richtig debuggen" nicht umgesetzt.

    Du hast ein Problem, also bemühe du dich, um solche Dinge hier nicht offen zu lassen. Solange das nicht alles geklärt ist, verabschiede ich mich aus diesem Thread.

  9. #9
    gelöschter User
    Gast

    Standard AW: fwrite schreibt doppelt

    OHA... mumpitz²

    jaja bandit ^^,
    ich nehme alles zurück,...

    PHP-Code:
    <?php
    // so lassen
    $errors = array();
    $logdir "logs/";

    // irgendwann schreibst du so die errors halt in den array
    $errors[] = "Fehler 1!";
    $errors[] = "Fehler 2!";
    $errors[] = "Fehler 3!";

    // und diesen teil müsstest du größtenteils wiedererkennen
    if(count($errors) > 0)
    {
        if(
    is_writeable($logdir))
        {
            
    $timestamp time();
            
            
    $e_dayword = array('mon','tue','wed','thu','fri','sat','sun');
            
    $e_date date("d.m.Y"$timestamp);
            
            
    $file fopen ($logdir.$e_date.".log""a+");
            foreach(
    $errors as $error)
            {
                
    $content $e_dayword[date("w"$timestamp)].' '.$e_date.' '.date("H:i:s"$timestamp)." ".$error."\n";
                
    fwrite($file,$content);
            }
            
    fclose($file);
        }
        else
        {
            
    $nerror "The directory ".$logdir." isn't wirtable";
        }
    }

    foreach(
    $errors as $error)
    {
        echo 
    '
        <div class="error" style="margin-bottom: 15px">
        <b>error:</b><br/>
        '
    .$error.'
        </div>'
    ;
    }
    if(!empty(
    $nerror))
    {
        echo 
    '<br />
        <b>error:</b>
        '
    .$nerror.'<br />
        please tell us about this error'
    ;
    }


    ?>
    Ist das das was du willst?
    Du solltest dich unbedingt mal mit foreach Schleifen auseinandersetzen ^^

    Gruß crAzywuLf
    Geändert von gelöschter User (16.10.2008 um 14:32 Uhr)

  10. #10
    Bandit
    Gast

    Standard AW: fwrite schreibt doppelt

    Zitat Zitat von crAzywuLf Beitrag anzeigen
    Den Modus "ab" gibt es nicht! Vielleicht solltest du den richtigen für dich auswählen
    Aus der Doku:
    Hinweis: Zusätzlich kann mode der Buchstabe 'b' hinzugefügt werden, der die Behandlung von Binärdateien erlaubt. Dies ist nur auf Systemen sinnvoll, welche zwischen Binär- und Text-Dateien unterscheiden (z.B. Windows. Ist bei Unix sinnlos). Wenn das Feature nicht gebraucht wird, wird es einfach ignoriert. Sie sollten den 'b' Flag verwenden, um Ihre Skripte portabler zu machen.

Ähnliche Themen

  1. Variable in fwrite
    Von Meisterter im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 6
    Letzter Beitrag: 17.05.2008, 13:13
  2. fwrite()
    Von Thonixx im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 3
    Letzter Beitrag: 07.12.2007, 17:45
  3. Freundin schreibt nicht zurück ...
    Von chris90night im Forum Off Topic und Quasselbox
    Antworten: 6
    Letzter Beitrag: 10.04.2007, 13:38
  4. AAAAAAHHHHHHH,keine schreibt ins 4rum!
    Von stiewen im Forum Eure Homepages und Foren - Vorstellung und Bewertungen
    Antworten: 2
    Letzter Beitrag: 29.09.2005, 16:28
  5. Wie schreibt man das
    Von FFXI im Forum HTML & CSS Forum
    Antworten: 9
    Letzter Beitrag: 20.07.2005, 12:01

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •