Ankündigung

Einklappen
Keine Ankündigung bisher.

Meldung während Ladevorgang

Einklappen

Neue Werbung 2019

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

  • Meldung während Ladevorgang

    Hi,

    ich habe ein PHP-Script, dass ca. 20-30 Sekunden benötigt, um etwas im Browser auszugeben.

    Nun gibt es ja die Sorte von Anwendern, die das nicht merken und dann F5 (aktualisieren) drücken. Dadurch geht's dann auch nicht schneller, sondern bewirkt genau das Gegenteil. Aus diesen Grund möchte ich eine Anzeige davor einblenden, die dem ungeduldigen User mitteilt, dass die Seite gerade lädt und er sich bitte kurz gedulden soll.

    Habt ihr eine Idee, wie das zu realisieren ist?

    Ich hatte gehofft, das mit ob_start hinzubekommen, allerdings wartet die Funktion auch, bis die komplette Seite geladen ist. Gibt es noch eine andere Möglichkeit?

    Dennis

  • #2
    Es geht mit flush();
    http://de2.php.net/manual/de/function.flush.php

    Leider gibt es dabei wieder einen Haken bei unserem lieben IE. Der macht sich da selbstständig und gibt erst aus, wenn eine bestimmte Bytezahl erreicht ist. Du müsstest also noch haufenweise Leerzeichen ausgeben! Aber in allen anderen Browsern geht das!

    wilko

    Kommentar


    • #3
      Re: Meldung während Ladevorgang

      Zitat von Quadaptor
      ich habe ein PHP-Script, dass ca. 20-30 Sekunden benötigt, um etwas im Browser auszugeben.
      [...]
      Gibt es noch eine andere Möglichkeit?
      Mach dem Script "Beine". Die Schmerzgrenze liegt bei 1-2 sec. bis max. 5 sec., wenn die Kiste "im Hochbetrieb" läuft. Solche langwierigen Berechnungen (?) mußt Du anderweitig lösen.

      Kommentar


      • #4
        Gib dir Recht

        Da gib ich meikel Recht.

        Es ist jedoch nicht immer einfach, schwierige Prozesse schneller zu machen.

        Vielleicht sollte man - je nach Aufgabe darüber nachdenken, die Daten irgendwie vorbereitet abzulagern und dann von dieser Quelle beziehen.

        Sollte ein Sucher im Spiel sein, welcher Daten collected, dann solltest du vielleicht einen Asynchronen Prozess starten. Dies ist allerdings nur unter Unix möglich.

        exec( "/usr/bin/php -q /var/www/htdocs/module/backend.php &" );

        Viele Grüße an meikel, der Befehl geht, und es heisst -q für Quiet. Soviel zum letzten Beitrag. Und das Prozess-Steuerungs-Modul ist standardmäßig in keiner vorkompilierten Library zu finden. Man tut sich glaub ich bei Shared Houseing ganz schön schwer, ohne SSH und ohne Rootzugriff etwas zu kompelieren.

        Mach dir eine Tabelle oder eine File, in welcher du Informationen über den aktuellen Ablauf speicherst.

        In der Hauptfile sagst du dann nur "Bitte warten bis Ihre Suchabfrage abgeschlossen ist." Dann ladest du per JavaScript alle 2 Sekunden die Seite neu.

        Viel Glück.
        Michi.

        Kommentar


        • #5
          Re: Gib dir Recht

          Zitat von RcRaCk2k
          exec( "/usr/bin/php -q /var/www/htdocs/module/backend.php &" );

          Viele Grüße an meikel, der Befehl geht, und es heisst -q für Quiet.
          1. hinter -f <file> steht 'parse <file>'
          -q <file> kann man auch benutzen, allerdings verhält sich da PHP etwas anders (bin zu faul, die Unterschiede zu suchen).

          2. das CLI verschiebt bei einem & 'am Ende' nicht den Prozeß in den Hintergrund sondern es übergibt das & als Parameter an das Script.

          Wenn sowas erreicht werden soll, muß das Script ausführbar gemacht werden, in die 1. Zeile
          Code:
          #!/usr/bin/php -q
          rein und das Script über /bin/sh aufgerufen werden.
          Code:
          exec( "/bin/sh /var/www/htdocs/module/backend.php &" );

          Kommentar


          • #6
            Hi ihr beiden,

            dem Script "Beine" machen geht leider nicht. Es ist ein Monitoringtool zum Überwachen von Servern (Verfügbarkeit / Performance). Die Werte werden "on the fly" über ein Java-Servlet erstellt und in einer Datenbank (Oracle) geschrieben, die ich dann ausgebe.

            Eine Reduzierung der Geschwindigkeit ist unmöglich.

            Kommentar


            • #7
              Zitat von Quadaptor
              dem Script "Beine" machen geht leider nicht. Es ist ein Monitoringtool zum Überwachen von Servern (Verfügbarkeit / Performance). Die Werte werden "on the fly" über ein Java-Servlet erstellt und in einer Datenbank (Oracle) geschrieben, die ich dann ausgebe.
              Sowas erledigt man via crontab in der Shell. Mit nmap hostname die verfügbaren Ports listen lassen und mit ping -c 1 hostname die Antwortzeit. Die Ausgaben einfach REGEXen und die Werte verwursten.

              Eine Reduzierung der Geschwindigkeit ist unmöglich.
              Falscher Bezug. Du sollst nicht die Geschwindigkeit sondern die Laufzeit reduzieren.

              Kommentar


              • #8
                Hi Meikel,

                das Script läuft a) auf einem Windows-Rechner und b) ist es mehr, als nur die Verfügbarkeit via Ping. Es werden u.a. XMLs über MQSeries verschickt und somit die entsprechenden Queues (Queue-Manager) und CICSe überprüft.

                Mit Geschwindigkeit war die Geschwindigkeit der Laufzeit gemeint.

                Dennis

                Kommentar


                • #9
                  Zitat von Quadaptor
                  das Script läuft a) auf einem Windows-Rechner
                  Warum suchst Du unbedingt solche vermeidbaren Probleme?

                  Kommentar


                  • #10
                    Die Deutsche Bank verwendet zu 80% Windows auf ihren Servern. Dann kommen noch 8% OS390-Server (IBM-OS für Großrechner) hinzu. Die restlichen Prozente teilen sich OS/2 und Linux.

                    Kann leider nicht bestimmen, wo solche Sachen laufen werden. Selbst auf Linux wäre es nicht anders möglich, weil es außer Java, C++ und evtl. C# keine anderen Sprachen Schnittstelle zu MQSeries zur Verfügung stellen.

                    Kommentar


                    • #11
                      Zitat von Quadaptor
                      Die Deutsche Bank verwendet zu 80% Windows auf ihren Servern. Dann kommen noch 8% OS390-Server (IBM-OS für Großrechner) hinzu. Die restlichen Prozente teilen sich OS/2 und Linux.
                      Uff... Da haben sich die Händler mit den schwarzen Koffern sicher die Klinke in die Hand gegeben.

                      Selbst auf Linux wäre es nicht anders möglich, weil es außer Java, C++ und evtl. C# keine anderen Sprachen Schnittstelle zu MQSeries zur Verfügung stellen.
                      Dann hast Du ein Problem. Aber man kann ja auch mit Java Anwendungen schreiben, welche über einen Scheduler im Hintergrund gestartet werden und die Infos entweder als Datei oder als DB Record ablegen, so daß Du fix an die Infos rankommst. Echtzeit ist eh der falsche Begriff, wenn die Statusabfrage ca. 30 sec. dauert.

                      Kommentar

                      Lädt...
                      X