Ankündigung

Einklappen
Keine Ankündigung bisher.

fwrite() funktioniert nicht innerhalb einer Schleife

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • fwrite() funktioniert nicht innerhalb einer Schleife

    Hallo,

    leider funktionieren zwei meiner per Cronjob automatisierter Skripte auch bei manuellem Aufruf nicht mehr (zuvor jahrelang problemlos im Einsatz, nichts am Skript geändert).
    fwrite() wird außerhalb der Schleife problemlos aufgerufen (Erstellen der Kopfzeile für ein Listing unserer Shopprodukte).
    Während die Schleife alle Produkte in die *.txt-Datei für die Suchmaschine einfügen soll, wird nur die Kopfzeile (erste Zeile des untenstehenden PHP-Codes) geschrieben und keine Artikel durch die Schleife hinzugefügt.
    PHP-Code:
    fwrite($fp"id"."\t"."titel"."\t"."preis"."\t"."link"."\t"."bild_url"."\t"."beschreibung"."\t"."zustand"."\n");

    while(
    $row mysql_fetch_array($res))
    {
    [..
    hier werden die Daten für $export erzeugt..]

    $export $artikel['nr'] ."\t"$artikel['name']."\t"$artikel['preis'] ."\t"$artikel['link'] ."\t"$artikel['imglink'] ."\t"$artikel['descr'] ."\t""neu" ."\n";

    fwrite($fp$export);
    echo 
    $export."\n";

    Der Array wird bei Aufruf der PHP-Datei problemlos angezeigt (echo). In die *.txt-Datei ($fp) wird lediglich die Kopfzeile eingefügt, d.h. die Datei ist prinzipiell beschreibbar und wird vor der Schleife geöffnet (fopen(), flock() )und nach Abarbeitung der Schleife geschlossen. Die Schreibrechte habe ich natürlich überprüft, sollten aber kein Problem darstellen, da außerhalb der Schleife auch in die Datei geschrieben werden kann.

    Das Skript lief wie gesagt jahrelang problemlos, ich bin lediglich durch die Fehlermeldung, dass keine Artikel in das Shoplisting eingefügt wurden, auf den Fehler (leere Datei nur mit Kopfzeile) aufmerksam geworden.

    Wo ist der Fehler? Es wurde nichts verändert an einem funktionierenden Skript....

    Vielen Dank,
    hausmaus


  • #2
    Hi.

    Gibt es eine Fehlermeldung (ERROR_REPORTING(E_ALL))?

    Wolf29
    while (!asleep()) sheep++;

    Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.

    Kommentar


    • #3
      Da ich nicht den ganzen Code sehe, versuche ich mal ins Blaue zu raten:

      Hast du evt am Ende der Schleife vergessen ein
      PHP-Code:
      <?php
      fclose
      ($fp);
      zu machen?

      Gibt es eine Fehlermeldung (ERROR_REPORTING(E_ALL))?
      error_reporting(-1) ist besser, weils wirklich alles anzeigt
      "My software never has bugs, it just develops random features."
      "Real programmers don't comment. If it was hard to write, it should be hard to understand!"

      Kommentar


      • #4
        Anscheindend selektiert die Query nichts mehr..
        --

        „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
        Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


        --

        Kommentar


        • #5
          Danke für die Tips.
          Die Datei wird am Ende des Schleifendurchlaufs mit fclose ($fp); geschlossen, das war nicht das Problem.
          error_reporting zeigte leider keinen Fehler.

          Das Problem habe ich jetzt umgangen, indem ich den geünschten Dateiinhalt zuerst in eine Variable $txt schreibe und $txt dann mit
          PHP-Code:
          $fp fopen ($prdatei'w' );
                  
          flock($fp,2);
              
          fwrite($fp,$txt);
              
          flock($fp,3);
              
          fclose($fp); 
          in die entsprechende Datei schreibe. Damit funktioniert es nun (wieder).

          Kommentar

          Lädt...
          X