PHP | Problem mit flush;

VIPbanner_de

www.VIPbanner.de
ID: 72674
L
1 Mai 2006
2.598
150
hi, habe einen linux Server auf dem flush; auch funktioniert
so funktioniert es einwandfrei:

test.php:
PHP:
<?php  // not in table tags for IE
echo str_pad('',1024);  // minimum start for Safari
for ($i=10; $i>0; $i--) {
    echo str_pad("$i<br>\n",8);
    // tag after text for Safari & Firefox
    // 8 char minimum for Firefox
    ob_flush();
flush();
  // worked without ob_flush() for me
    sleep(1);
}
?>
Wenn ich es so mache geht es nicht.. also die mails werden zwar verschickt aber das script zeigt mir nicht den "live Versand" an. Es wird erst angezeigt wenn alle mails weg sind.
PHP:
while($zeile=mysql_fetch_row($result)) {
		
			$text=$decodierter_text;
				
			mail("$zeile[3]","Betreff]","Mailtext... $text","From: $sitename <$adminemail>");
		
	
echo"Verschickt an : <b>$zeile[0]</b> $zeile[3]<br>";
ob_flush();
flush();

 }

Eigendlich sollte es doch gehen.. is doch richtig platziert in der Schleife... oder seh ich was nicht was ihr seht!?!
 
Du hast mit flush() nicht die absolute Kontrolle, die du dir vorstellst.

Es kann sein - und dieser Fall liegt hier wohl vor -, dass der HTTP-Server auch noch Ausgabe cacht.
 
und wie löse ich das Probelm? beim ersten Beispiel klappts ohne probs.. beim 2., welches auch eingesetzt wird, da gehts nicht.
 
Bau mal nach der mail()-Anweisung noch n 1sekündigen-sleep() ein.
Das scheint mir der einzig relevante Unterschied zwischen den beiden Scripts zu sein.

Ansonsten musst du halt mal die Konfiguration deines HTTP-Servers durchgehen und da nach einer Lösung suchen.
 
Bau mal nach der mail()-Anweisung noch n 1sekündigen-sleep() ein.
Das scheint mir der einzig relevante Unterschied zwischen den beiden Scripts zu sein.

Ansonsten musst du halt mal die Konfiguration deines HTTP-Servers durchgehen und da nach einer Lösung suchen.

die sleep funktion hatte ich schon testweise drin gehabt.. das war nicht die Lösung des Problems. Ich wüsste auch keinen Ansatz zu schaeun was das Problem ist.. weil es funktioniert ja.. nur mit der mail net.. und ich hab die letzten 2 std. gegooglet und manuals gelesen.. aber der Lösung bin ich nicht näher gekommen
 
Manche Browser geben eine Zeile erst aus, nachdem Sie durch einen Zeilenumbruch beendet wurde.

Und da ist auch schon der 2. Unterschied zum 1. Script: Füge mal nen \n ein um eine "echte" neue Zeile zu senden.
 
Oh man, immer alles auf PHP schieben :roll:

Dein Apache kann eventuell alles cachen bevor es an den Client sendet, dein Browser kann alles cachen, bevor er es darstellt, und so hört es sich nach deiner Problemschilderung auch an.

Ob_Flush und Sleep ist eh totaler Mist. Nimm ne andere Methodik, zb Ajax-Requests