Problem mit Caching

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

  • Problem mit Caching

    Ich habe in meinen Dateien folgenden Code, der dafür sorgt, dass der nachfolgende Inhalt beim ersten Aufrufen in einer .tmp-Datei abgelegt wird, aus welcher er beim zweiten Aufrufen der Seite wieder ausgelesen wird. Das funktioniert sonst auch wunderbar, seit ich Änderungen an der Datei vorgenommen habe funktioniert es jedoch nicht mehr.

    Die tmp-Datei wird zwar korrekt angelegt, allerdings kommt beim zweiten Aufruf folgende Fehlermeldung:

    Warning: Cannot modify header information - headers already sent by (output started at /path/to/my/directory/test.php5:1) in /path/to/my/directory/test.php5 on line 10

    Normalerweise wird dieser Fehler ja ausgegeben, wenn vor dem Senden des Headers etwas ausgegeben wird, das ist aber nicht der Fall.

    PHP-Code:
    <?php
        $id 
    $_GET['id'];

        
    // ------ Start Caching -----------------------
        // Header
        
    ob_start();
        
    $cache_file "cache/produkt/article_".$id.".tmp";
        
    clearstatcache();
        if(
    file_exists($cache_file)) {
            
    header("content-lenght: ".filesize($cache_file));
            
    readfile($cache_file);
        }
        else {
        
    // ------ Ende Caching ------------------------
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    ...
    Das Genie überblickt das Chaos!

    Wer Rechtschreibfehler findet, darf sie behalten!

  • #2
    ich vermute ein Leerzeichen/Absatz/Tab vor dem öffnenden <?php -tag
    Freedom is a state of mind. Not a state in which we live.

    troxdev.ch | animefieber

    Kommentar


    • #3
      sehr beliebt auch das bom. zieh dir ggf. mal das notepad++, das zeig das bom an.

      gruß
      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        Also die spitze Klammer des öffnenden PHP-Tags ist definitiv das erste Zeichen. Bin grad dabei mir Notepad++ zu installieren um nach dem bom(?) zu sehen.
        Das Genie überblickt das Chaos!

        Wer Rechtschreibfehler findet, darf sie behalten!

        Kommentar


        • #5
          Wow, ich bin beeindruckt! Du hast mir soeben gezeigt, wie ich mir 1 Stunde Fehlersuche hätte sparen können. Es lag tatsächlich an diesem "BOM". Sehr hilfreicher Tipp! Nochmals besten Dank an Peter
          Das Genie überblickt das Chaos!

          Wer Rechtschreibfehler findet, darf sie behalten!

          Kommentar


          • #6
            Achso, was ich jetzt noch fragen wollte: Wie kann ich mir das bom anzeigen lassen? Ich hab den Fehler jetzt nämlich einfach gelöst indem ich "Format -> Kodiere in UTF-8 (ohne BOM)" angeklickt habe.
            Das Genie überblickt das Chaos!

            Wer Rechtschreibfehler findet, darf sie behalten!

            Kommentar


            • #7
              format -> kodiere in ansi. dann siehst du es.

              gruß
              peter
              Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
              Meine Seite

              Kommentar


              • #8
                Ich möchte den Thread hier wieder aufgreifen, und zwar wurde das mit dem BOM ja von php.net als PHP Bugs: #22108: php doesn't ignore the utf-8 BOM erkannt.

                Meine Dokumente werden im tsWebEditor alle als UTF8-kodiert abgespeichert und das soll auch so bleiben, hab keine Lust, alle Umlaute mit &uuml; und dem Zeug zu kodieren.

                Ich verwende PHP 5.2.9-2. Nun soll es ja die Möglichkeit geben, PHP mit --enable-zend-multibyte zu kompilieren. Da ich das ganze per Windows Installer installiert habe, musste ich mich noch nie um solche Sachen kümmern. Ich habe nach längerer Suche einfach nirgends eine verständliche Anleitung gefunden, wie und wo ich (wahrscheinlich in der Windows-Kommandozeile) PHP im Nachhinein konfigurieren kann (abgesehen von der php.ini), und ist das überhaupt möglich und anzuraten? Ich möchte nicht auf PHP6 warten müssen.


                EDITH: Ich habe doch noch eine Lösung gefunden, und zwar kann man im tsWebEditor glücklierweise die Option "Mit BOM speichern" deaktivieren. Dasselbe soll auch in Adobe DW möglich sein. Die Frage mit dem Kompilieren bleibt aber- gibt es irgendwo eine gute Anleitung dazu, wenn möglich auf Deutsch?
                Zuletzt geändert von tim-gt; 23.07.2009, 09:59.

                Kommentar


                • #9
                  Das kann alles sein... Aber es ist keine Empfehlung!

                  Klar kannst du dir dein propitäres PHP kompilieren. Aber deine Scripte werden sich dann darauf verlassen. Und sind damit nicht mehr portabel.

                  Meine Dokumente werden im tsWebEditor alle als UTF8-kodiert abgespeichert und das soll auch so bleiben, hab keine Lust, alle Umlaute mit &uuml; und dem Zeug zu kodieren.
                  Das eine hat mit dem anderen nix zu tun!

                  Aber wenn du wirklich unter Win dein PHP selber kompilieren willst, dann: PHP: internals:windows:stepbystepbuild [PHP Wiki]
                  Wir werden alle sterben

                  Kommentar


                  • #10
                    Das hat doch schon etwas miteinander zu tun: Wenn ich dem Browser via meta-tags und php header() 100% mitteile, die Datei sei utf-8, sie aber als iso-8859-1 abspeichere, werden in der Datei eingegebene Umlaute ä ü etc. im Browser nicht oder falsch angezeigt. Um dies zu umgehen, müsste ich &uuml; &auml; etc. verwenden oder aber die Datei als utf-8 abspeichern. Wenn du mich fragst ein Zusammenhang.

                    Kommentar


                    • #11
                      oder konvertieren.. z.B. iconv()



                      Natürlich kannst du kein iso-xxxx in einem utf-8 Dokument einfach so ausgeben. Das wäre dumm! Klüger ist es sich auf einen Zeichensatz einzuschießen und grundsätzlich dabei zu bleiben.

                      mitteile, die Datei sei utf-8, sie aber als iso-8859-1 abspeichere,
                      Wenn du vor hast solche Böcke zu schießen (hätte ich dir nicht zugetraut), dann hilft dagegen auch kein PHP-kompilieren.
                      Wir werden alle sterben

                      Kommentar


                      • #12
                        Ich habe lange Zeit unter Windows den tswebeditor genutzt - eigentlich ein sehr guter Editor - bis ich immer wieder über den BOM stolperte den der Editor (weiss der Geier warum) dort rein gesetzt hatte.

                        Bin dann auf Pspad umgestiegen und das Thema war für mich erledigt.

                        Kommentar


                        • #13
                          Zitat von combie Beitrag anzeigen
                          oder konvertieren.. z.B. iconv()



                          Natürlich kannst du kein iso-xxxx in einem utf-8 Dokument einfach so ausgeben. Das wäre dumm! Klüger ist es sich auf einen Zeichensatz einzuschießen und grundsätzlich dabei zu bleiben.


                          Wenn du vor hast solche Böcke zu schießen (hätte ich dir nicht zugetraut), dann hilft dagegen auch kein PHP-kompilieren.
                          Das war nur ein Beispiel. Ich habe vorher aber in der Tat nicht gewusst, ob und wo man einstellen kann, in welchem Format ein Editor wie DW abspeichert, und dachte, dies spiele gar keine Rolle, weil man dem Browser ja mitteilen würde... Ja, lassen wir das, anno dazumal hatte ich noch nicht viel Ahnung von Zeichenkodierung - was zugegebenermassen nicht das trivialste Thema ist.

                          Kommentar


                          • #14
                            Zitat von piratos Beitrag anzeigen
                            Ich habe lange Zeit unter Windows den tswebeditor genutzt - eigentlich ein sehr guter Editor - bis ich immer wieder über den BOM stolperte den der Editor (weiss der Geier warum) dort rein gesetzt hatte.

                            Bin dann auf Pspad umgestiegen und das Thema war für mich erledigt.
                            Also in 2.2.20.79 kann ich das auf jeden Fall einstellen.

                            Kommentar


                            • #15
                              Zitat von tim-gt Beitrag anzeigen
                              Also in 2.2.20.79 kann ich das auf jeden Fall einstellen.
                              Tja das dachte ich auch immer hat aber nicht regelmässig gefunzt.

                              Das waren so meine Erfahrungen.

                              Da die letzte Stable vom 20.6.2006 und die letzte Dev Version (Patch) vom 13.2.2007 ist war das für mich ein Grund mehr zu wechseln, da der Editor offenbar nicht mehr gewartete wird.

                              Kommentar

                              Lädt...
                              X