php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.08.2004, 13:51  
Gast
 
Beiträge: n/a
Standard [Erledigt] "Output-Pufferung spezial...?"

Hallo,

bin gerade an einem Problem dran, wo ich einen speziellen PHP-Code Block puffern muss, aber

PHP-Code:
// Block 1
// hier steht einiges an PHP-Code
// ...

// Block 2
// hier steht der zu puffernde Code
// ...

// Block 3
// hier kommt wieder anderer PHP-Code
// ... 
das ganze sieht so wie oben schemenhaft dargestellt aus, d.h. es müssen Block 1 und Block 3 ohne Pufferung sofort ausgegeben werden, nur der Block 2 muss zeitlich verzögert ausgegeben werden.

Ich kann leider den Block 2 an keine andere Stelle im Script setzen (weil dadurch zig andere PHP-Seiten geändert werden müssten und weil v.a. dadurch meine urpsrüngliche Konzeption nicht mehr geht...)

Daher kann ich auch nicht sleep(), flush() oder die ob_() Befehle verwenden...

Ich suche praktisch eine analoge Möglichkeit wie bei JavaScript mit setTimeout() für PHP, vielleicht hat jemand einen Vorschlag. Wär' super.
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 28.08.2004, 14:17  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 2.150
Guradia befindet sich auf einem aufstrebenden Ast
Standard

Verständinsschwierigkeit meinerseits ...

Ich komme nicht ganz dahinter, was du tun willst ...
Du willst Block 1 und 3 ausgeben lassen .. und dann Block 2 dazwischen hinterherschieben*?!* ...

Das ganze scheitert ja schon hieran:
"Hallo Browser .. da kommt noch was für ungefähr da .. in der Mitte ..."

Grunstäzliches: Man trenne Logik von Ausgaben und dann sollte das ganze irgendwie richtig rum hinten rauskommen. Dürfte wohl eher unerheblich sein, ob das nun sofort ausgegeben wird, oder gepuffert.
Guradia ist offline   Mit Zitat antworten
Alt 28.08.2004, 14:19  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 1.531
Quadaptor befindet sich auf einem aufstrebenden Ast
Standard

Stimmt. Am besten lässt sich das mit einer Templateengine realisieren.

Vermutlich ist was mit deiner Programmierung falsch, ansonsten würde solch ein "Fehler" bzw. notweniger Workarround nie gebraucht werden.
Quadaptor ist offline   Mit Zitat antworten
Alt 28.08.2004, 14:41  
Gast
 
Beiträge: n/a
Standard

Hallo,

Re Verständnis: OK, verstehe ich, da fehlt etwas:

Block 1 und Block 3 enthalten Content der sofort an den Browser geschickt werden soll (aufbereitet und dargestellt wird das ganze per Template-System, das bei PHP dabei ist, ITX...).

Block 2 enthält einen Seiten-Redirect mittels header() (und ein paar andere Dinge noch die damit zusammenhängen).
Was soll überhaupt passieren? Der Inhalt (Block 1 und 2) soll dargestellt werden, dann nach ein paar Sekunden ein automatischer Redirect mittels dem header-Code von statten gehen.

Wie schon geschrieben ist es nicht gerade einfach diesen Block 2 woanders hinzuverfrachten.

Etwas klarer?
  Mit Zitat antworten
Alt 28.08.2004, 14:59  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 1.531
Quadaptor befindet sich auf einem aufstrebenden Ast
Standard

Ja, etwas klarer ist es schon.
Allerdings sobald eine Ausgabe an den Browser gesendet wird, ist eine Weiterleitung per header() nicht mehr möglich. Du könntest das Meta-Tag "Refresh" verwenden.
Quadaptor ist offline   Mit Zitat antworten
Alt 28.08.2004, 15:43  
Gast
 
Beiträge: n/a
Standard

Hallo,

ja das Meta-Tag hab ich noch gar nicht in Erwägung gezogen, danke.
  Mit Zitat antworten
Alt 03.09.2004, 17:02  
Gast
 
Beiträge: n/a
Standard

Das geht schon, und auch wenn er sich am Anfang etwas verwirrend ausgedrückt hat - ich meine sein Problem zu verstehen

Output-Buffering ist dein Freund - probier mal Folgendes:

Code:
// Block 1
ob_start(); // <- Level 1 Anfang
print "Ganz viel Content...";

// Block 2
if ($ich_muss_weg) {
    Header ( ... );
    exit;
} else {
    ob_start(); // <- Level 2 Anfang
    print "Nochmal etwas...";
    $save_block2=ob_get_contents();
    ob_end_clean(); // <- Level 2 Ende mit Clean
}

// Block 3
print "...Seufz - noch mehr Zeugs..";

print "Ich kann jetzt mit 'save_block2' machen was ich will, und zwar _nach_ der Ausgabe der anderen beiden Blöcken. Hier ist es: $save_block2";

ob_end_flush(); // <- Level 1 Ende mit Output
Grüsse

Lev
  Mit Zitat antworten
Alt 04.09.2004, 12:04  
Gast
 
Beiträge: n/a
Standard

Hi,

Danke für Deine Antwort. Schau ich mir später genauer an...

Ciao,
Michael
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:31 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.