tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
8
ZUGRIFFE
1372
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von dwex
    dwex dwex ist offline Mitglied Platin
    Registriert seit
    Apr 2005
    Ort
    Landshut (Niederbayern)
    Beiträge
    695
    Hallo Leute,

    konnte meinen Titel leider nicht besser wählen.

    Also was mache ich.
    Ich habe ein Newsletterscript geschrieben welches über SMTP Mails jeweils einzeln an die Empfänger senden (persönliche Anrede im Newsletter).

    Dazu sende ich, damit ich vom Server keinen Timeout bekomme, immer noch "Blöcke" mit z.Zt. 500 Mails gleichzeitig und rufe dann das Script mit einem Zeiger neu auf. Das funktioniert bestens.
    Jetzt wollte ich einfach bei jedem Scriptdurchlauf auch einen Fortschritt angeben - dazu habe ich mal das Beispiel (ziemlich weit unten) von dieser Seite genommen und daraus folgendes Testscript gemacht:
    PHP-Code:
    <?php
    ob_start
    ();
    echo 
    "Fortschritt: ".$_GET['fortschritt']."%";

    sleep(5); // Pause zum simulieren von größeren Operationen

    if($_GET['fortschritt'] != 100) {
    $fort $_GET['fortschritt']+10;
    header('Location:  http://192.168.222.9/fortschritt.php?fortschritt='.$fort);
    }



    ob_end_flush();

    ?>
    Jetzt würde ich ja erwarten, dass er alle 5 Sekunden einen neuen Fortschritt ausgibt - selbiges tut er aber nicht. Er ruft zwar die "Schleife" auf und sendet jeweils den neuen Header - eine Ausgabe erhalte ich aber erst nach dem letzten Durchlauf - also wenn die IF-Abfrage falsch (oder richtig - je nachdem wie man es sieht) wird.

    Hat jemand von euch eine Idee und kann mir auf die Sprünge helfen - gerne auch mit einem völlig anderen Lösungsansatz.
    Geändert von dwex (02.11.09 um 15:13 Uhr)
     
    Ich würde mich über die Bewertung meiner Beiträge mit Kurzkommentar sehr freuen!

    Die "dumme Frage" ist gewöhnlich das erste Anzeichen einer völlig neuen Entwicklung!
    -------------------
    Es ist immer Zeit etwas zu verändern ....
    .... das alles so bleibt wie es ist!

    -------------------
    Homepage Landshut
    -------------------
    /voodoo.css
    #meinFeind {position: absolute; bottom: -6ft;}

  2. #2
    NoUse4aNick NoUse4aNick ist offline Mitglied Silber
    Registriert seit
    Nov 2007
    Beiträge
    94
    Das liegt auch daran das dein header nach 0 sekunden standart wert sich sezt.
    PHP-Code:
    header('Location:  http://192.168.222.9/fortschritt.php?fortschritt='.$fort 5); 
    versuch es mal hiermit damit gibst du das delay an. Musst du aber experimentieren mit den werten das es zufriedenstellend ist.

    Oder du gehst über die "refresh" function:
    PHP-Code:
    header('Refresh: 5; URL=http://192.168.222.9/fortschritt.php?fortschritt='.$fort); 
    letzter Code ist ungetestet sollte aber genauso funktionieren.
    Geändert von NoUse4aNick (02.11.09 um 15:21 Uhr)
     

  3. #3
    Avatar von dwex
    dwex dwex ist offline Mitglied Platin
    Registriert seit
    Apr 2005
    Ort
    Landshut (Niederbayern)
    Beiträge
    695
    Hallo,

    vielen Dank für deine schnelle Antwort.

    Also erstere Variante funktioniert nicht bei mir - ich bekomme wieder keine Ausgabe (ausser am Schluss 100%)

    Die zweite Variante funktioniert (auch mit Refresh: 0) - hierzu jedoch noch eine Frage:
    Ist das gleichzusetzen mit der Meat-Refresh-Variante?
    Wenn ja - SelfHTML schreibt ja das man sich auf Meta-Refresh nicht verlassen darf, da es vom Benutzer ggf. deaktiviert werden kann bzw. das dies evtl. nicht alle Browser unterstützten?
     
    Ich würde mich über die Bewertung meiner Beiträge mit Kurzkommentar sehr freuen!

    Die "dumme Frage" ist gewöhnlich das erste Anzeichen einer völlig neuen Entwicklung!
    -------------------
    Es ist immer Zeit etwas zu verändern ....
    .... das alles so bleibt wie es ist!

    -------------------
    Homepage Landshut
    -------------------
    /voodoo.css
    #meinFeind {position: absolute; bottom: -6ft;}

  4. #4
    NoUse4aNick NoUse4aNick ist offline Mitglied Silber
    Registriert seit
    Nov 2007
    Beiträge
    94
    Ja über die Header funktion bindest du meta tags ein. Allerdings nicht in HTML format sondern als HTTP rohform header.

    Wie das ganze in der Praxis aussieht kann ich dir leider nicht sagen, da ich für solche ich nenne es jetzt mal "visuelle effekte" nicht php/html statisch auf animiert schummelein benutze sondern gleich auf Flash bzw Ajax zurückgreife.

    Edit:
    Ich glaube im ersten code ist ein syntax fehler:
    PHP-Code:
    header('Location:  http://192.168.222.9/fortschritt.php?fortschritt='.$fort.' , 5'); 
    versuch es am besten nochmal mit diesem Code, und poste das Ergebniss bitte würde mich interessieren =)
    Geändert von NoUse4aNick (02.11.09 um 15:54 Uhr)
     

  5. #5
    Avatar von Da_Chris
    Da_Chris Da_Chris ist offline Mitglied Platin
    Registriert seit
    Feb 2007
    Ort
    Augsburg
    Beiträge
    651
    @NoUse4aNick: bist du dir sicher das du nicht das meta tag meinst
    Hab jedenfalls noch nie von der Möglichkeit eines delays in der header funktion gehört. Zumal das auch nichts hilft.
    Und selbst wenn es geht dann wird PHP Serverseitig ausgeführt. das heisst er wartet auch Serverseitig 5 Sekunden.

    @dwex: Mit ob_start wartest du ausserdem bis zum Ende des Scripts bis er den Buffer ausgibt.
    PHP wird Serverseitig ausgeführt und dann an den Clienten geschickt und zwar immer erst am Ende des Skripts.
    Das was du umsetzen willst erfordert Ajax.
     
    Google und die Forensuche beantworten 50% aller Fragen!
    Pflichtlektüre: Das PHP Handbuch als Windows Help Datei

    Bitte Benutzt für Source-Code immer die richtigen Formatierungstags:
    [PHP]Für PHP diese Tags[\PHP] ... [HTML]Für HTML diese Tags[\HTML] ... [SQL]Für SQL diese Tags[\SQL] ... [CODE]Für sonstigen Code[\CODE]

    Wenn mein Beitrag hilfreich war bitte ich um eine positive Bewertung.

  6. #6
    NoUse4aNick NoUse4aNick ist offline Mitglied Silber
    Registriert seit
    Nov 2007
    Beiträge
    94
    @ DaChris: Das ist was ich per Google gefunden habe. Ich benutze wie schon oben beschrieben solche Funktionen zum Animations Schummeln mit PHP nicht.
     

  7. #7
    Avatar von Da_Chris
    Da_Chris Da_Chris ist offline Mitglied Platin
    Registriert seit
    Feb 2007
    Ort
    Augsburg
    Beiträge
    651
    Zitat Zitat von NoUse4aNick Beitrag anzeigen
    @ DaChris: Das ist was ich per Google gefunden habe. Ich benutze wie schon oben beschrieben solche Funktionen zum Animations Schummeln mit PHP nicht.
    Mh ich weis nicht was du da gefunden hast aber wie gesagt ist es technisch schon garnicht möglich da PHP Serverseitig ausgeführt wird und dann der Content an den Client weitergeleitet wird.
    Beide Inhalte die du gezeigt hast funktionieren höchstens in einem html metatag so wie du es beschreibst ist es nicht möglich das Problem zu lösen.
     
    Google und die Forensuche beantworten 50% aller Fragen!
    Pflichtlektüre: Das PHP Handbuch als Windows Help Datei

    Bitte Benutzt für Source-Code immer die richtigen Formatierungstags:
    [PHP]Für PHP diese Tags[\PHP] ... [HTML]Für HTML diese Tags[\HTML] ... [SQL]Für SQL diese Tags[\SQL] ... [CODE]Für sonstigen Code[\CODE]

    Wenn mein Beitrag hilfreich war bitte ich um eine positive Bewertung.

  8. #8
    NoUse4aNick NoUse4aNick ist offline Mitglied Silber
    Registriert seit
    Nov 2007
    Beiträge
    94
    Ts meinte es funktoniert ich geb dir morgen den Suchbegriff den ich benutz habe der ist leider aufm Arbeitsrechner und nicht aufm Homerechner
     

  9. #9
    Avatar von Da_Chris
    Da_Chris Da_Chris ist offline Mitglied Platin
    Registriert seit
    Feb 2007
    Ort
    Augsburg
    Beiträge
    651
    Selbst wenn du eine Seite über googel gefunden hast die sagt es geht heisst es nicht das es gehen muss.
    Es geht einfach nicht weil die Technik es nicht zulässt.
    In meinem Beitrag habe ich hoffentlich doch verständlich und genau erklärt warum es nicht gehen kann....
    Vielleicht hilft ein Bild weiter?
    http://www.problem-hilfe.de/linux/im...tionsweise.gif
     
    Google und die Forensuche beantworten 50% aller Fragen!
    Pflichtlektüre: Das PHP Handbuch als Windows Help Datei

    Bitte Benutzt für Source-Code immer die richtigen Formatierungstags:
    [PHP]Für PHP diese Tags[\PHP] ... [HTML]Für HTML diese Tags[\HTML] ... [SQL]Für SQL diese Tags[\SQL] ... [CODE]Für sonstigen Code[\CODE]

    Wenn mein Beitrag hilfreich war bitte ich um eine positive Bewertung.

Ähnliche Themen

  1. Übliches header:location Problem
    Von Dörti.Hermi im Forum PHP
    Antworten: 28
    Letzter Beitrag: 11.10.09, 12:59
  2. IE Problem mit header-location
    Von Hattrix im Forum PHP
    Antworten: 6
    Letzter Beitrag: 11.07.07, 15:02
  3. header("location... Problem
    Von Katzehuhn im Forum PHP
    Antworten: 7
    Letzter Beitrag: 19.06.05, 13:15
  4. header, ob_start und ob_end_flush
    Von Eaden im Forum PHP
    Antworten: 6
    Letzter Beitrag: 19.04.05, 15:16
  5. ob_start() und header() ?
    Von Funjoy im Forum PHP
    Antworten: 12
    Letzter Beitrag: 12.11.04, 17:10