ob_start () und ob_flush () funktionieren nicht

8

Ich verwende ob_start() / ob_flush() , um mir hoffentlich während eines langen Importvorgangs etwas Fortschritt zu verschaffen.

Hier ist ein einfacher Überblick über das, was ich mache:

%Vor%

Es wird jedoch überhaupt nichts auf den Bildschirm ausgegeben.

Ich weiß, dass die Datendatei heruntergeladen wird, weil ich das Verzeichnis beobachte, in dem sie abgelegt wird.

Ich weiß auch, dass der Import stattfindet, was bedeutet, dass es in der while-Schleife ist, weil ich die DB überwachen kann und Datensätze eingefügt werden.

Irgendwelche Ideen, warum ich nicht auf dem Bildschirm ausgegeben werde?

    
MB34 14.05.2010, 19:27
quelle

5 Antworten

16

Sie müssen auch die PHP-Einstellungen überprüfen

einige installieren standardmäßig 4096, einige standardmäßig auf

  

output_buffering = Aus
  output_buffering = 4096

stimmte mit George überein, aber überprüfe die obigen Einstellungen

    
Geek Num 88 14.05.2010, 19:48
quelle
13

Stellen Sie sicher, dass Ihre Ausgabepufferung nicht automatisch gestartet wird. Lauf:

%Vor%

vor ob_start (); Wenn du etwas anderes sehen wirst als 0, hast du die Antwort.

    
Piotr Pankowski 14.05.2010 19:50
quelle
5

Hey Mann, ich war auch in diesem Problem stecken geblieben und bekam schließlich die richtige Lösung hier ist es für dich

Sie müssen den Inhaltstyp für Ihre Seite hinzufügen Sie können das auf zwei Arten tun  1. Verwenden von HTML-Tag

%Vor%

Beispiel

%Vor%
  1. mit PHP-Header-Funktion

    <?php header( 'Content-type: text/html; charset=utf-8' ); ?>

Beispiel

%Vor%

Alles Gute

    
Rahul Shinde 12.06.2013 13:08
quelle
2

Ob_end_clean () verwirft den Inhalt des aktuellen Ausgabepuffers und schaltet die Pufferung aus. Sie sollten stattdessen ob_end_flush () verwenden.

    
fireweasel 14.05.2010 19:41
quelle
-1

Es ist möglich, dass Ihr Webserver eine eigene Pufferung durchführt. Wahrscheinlich mit etwas wie mod_gzip.

Hier ist ein sehr einfacher Testcode:

%Vor%

Wenn das Laden dieser Seite 10 Sekunden dauert, anstatt alle 2 Sekunden eine neue Zeile zu sehen, bedeutet dies, dass sie von Ihrem Webserver zwischengespeichert wird. Für das, was Sie versuchen, müssen Sie ob_start und ob_flush nicht verwenden. Rufen Sie einfach flush auf, wenn Sie den Inhalt im Browser erzwingen möchten. Aber wie gesagt, wenn der Webserver darauf wartet, dass der Inhalt vor dem Senden abgeschlossen wird, wird das nichts für Sie tun.

Bearbeiten Eine andere Möglichkeit besteht darin, dass Sie die Seite von einem Firmen- oder ISP-Proxy / Firewall aus anzeigen, der auf die gesamte Seite wartet, bevor Sie sie bereitstellen (damit er sie scannen kann, um zu sehen, ob es sieht zum Beispiel wie Pornografie aus.)

    
Kip 14.05.2010 19:52
quelle

Tags und Links