Geschwindigkeitsproblem

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

  • Geschwindigkeitsproblem

    Hallo,

    jetzt nicht lachen, aber der Aufbau meiner Seiten ist zu schnell.
    Dh.

    ich habe mehrere Frames

    Code:
    Hauptseite
    +---------------------+
    |        top          |
    +---------------------+
    |                     |
    |      middle         |
    |                     |
    +---------------------+
    |        foot         |
    +---------------------+
    
    Frame 'middle' teilt sich in
    +---------------------+
    |    |                |
    |menu|     main       |
    |    |                |
    +---------------------+
    Bedingung des Auftragsgebers ist, es soll ohne JS funktionieren.
    Deshalb wird im Menu als Ziel "middle" angegeben, das Script middle.php packt
    die übergebenen Variablen in die Session, und gibt dann das
    Frameset zur Anzeige von menu und main aus.

    Nun passiert es aber recht häufig, das er beim Klicken ins Menu
    wieder die alte Seite anzeigt.
    Ein Blick in die Session zeigt, er hat es zwar reingeschrieben,
    aber menu und main haben es vor dem Schreiben bereits ausgelesen,
    und sind dadurch falsch.
    Ein zweiter Klick auf den Menupunkt bringt die richtige Seite.

    Auch ein sleep() in der middle.php hilft, doch ist die Seite bei einem sleep(1)
    schon nicht mehr flüssig (das stört den Auftraggeber), da das
    ganze im Intranet läuft

    jemand eine Idee, wie ich Verzögerungen im 0,1 Sek Takt einbauen kann?
    Das dürfte schon reichen, damit die Session vorher gespeichert ist.
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

  • #2
    wenn du einfach ne sinnlosschleife laufen läßt ??

    mußt du halt ausprobieren, dass dürfte dir aber helfen!

    gruss

    Kommentar


    • #3
      ähm woher wissen die seiten es scho bevor es die session weiß!?

      also ich hab das etz so verstanden das du als target middle angegeben hast, und dann?! was schreibst du den in die sess? also wennst es aweng genauer erklärst würd ich was verstehn...

      aber auser das ein sleep zu lang ist und aus irgendeinem grund die seiten was wissen was sie nochgarnet wissen sollen... (warum weis ich au net...)

      Man lernt nie aus...

      ...und wenn man's doch tut braucht man sich auch nicht schämen!

      Kommentar


      • #4
        hab gerade ne alternative gefunden:

        http://www.php.net/manual/en/function.usleep.php

        Kommentar


        • #5
          Original geschrieben von MoRtAlAn
          hab gerade ne alternative gefunden:

          http://www.php.net/manual/en/function.usleep.php
          Knapp daneben

          Zitat: Note: This function does not work on Windows systems.


          Original geschrieben von BloodReaver
          ähm woher wissen die seiten es scho bevor es die session weiß!?

          also ich hab das etz so verstanden das du als target middle angegeben hast, und dann?! was schreibst du den in die sess? also wennst es aweng genauer erklärst würd ich was verstehn...

          aber auser das ein sleep zu lang ist und aus irgendeinem grund die seiten was wissen was sie nochgarnet wissen sollen... (warum weis ich au net...)

          die Session ist ja vorher schon da, und je nachdem was da drin steht, werden die untersten Frameseiten gebaut.
          Im Endeffekt, macht die die middle.php nur ein

          PHP-Code:
          // DB Connection
          // Session laden
          // User prüfen
          // Template laden
          // ...
          if(isset($HTTP_GET_VARS['a']))
              
          $session->set('a',$HTTP_GET_VARS['a']);
          $session->save();
          $tpl->output(); 
          TBT

          Die zwei wichtigsten Regeln für eine berufliche Karriere:
          1. Verrate niemals alles was du weißt!


          PHP 2 AllPatrizier II Browsergame

          Kommentar


          • #6
            sorry, haste nich geschrieben!!

            mh... dann wohl doch ne kleine Sinnlosschleife alla

            for ($i = 0; $i <= 1000; $i++) {
            //really nothing
            }

            Kommentar


            • #7
              ich nehme an das der webserver ein windows-server ist, sonst würdest du wohl (da bin ich ziemlich sicher) schon längst 'usleep(int micro-sec)' nutzen

              daher finde ich ein kleine rechenaufgabe wäre eine gute lösung, wenn ich daran denke das mein rechner für manche rechenaufgaben (999...,E+9999 * 999...+E9999) ewig bracht ... ^^

              und eine kleine multiplikation ist auch nicht so unschön, wie eine for-schleife bis x zählen zu lassen

              Kommentar


              • #8
                alles muß man selber machen

                so, damit kann man wenigstens einigermaßen die Wartezeit steuern

                PHP-Code:
                function my_sleep($time=0){
                    
                $s explode(" "microtime());
                    
                $e1 $s1 = ($s[1] + $s[0])*1000;
                    while(
                $e1-$s1<$time){
                        
                $s explode(" "microtime());
                        
                $e1 = ($s[1] + $s[0])*1000;
                    }

                TBT

                Die zwei wichtigsten Regeln für eine berufliche Karriere:
                1. Verrate niemals alles was du weißt!


                PHP 2 AllPatrizier II Browsergame

                Kommentar


                • #9
                  was heißt alles muss man selber machen ??

                  da du versierter Anwender bist, brauch man dir ja keine Codeschnippsel hinwerfen!

                  aber die Lösung is ok!

                  Kommentar


                  • #10
                    An und für sich sollte es funktionieren, wenn Du die Ausgabe des Frameset's bis auf den Schluß des Scripts verschiebst ... eventuell mit einem ob_start() am Anfang und dann nachdem Du alle Daten in der Session gesetzt hast die Funktion void session_write_close(void) ...

                    Eine andere Variante ist es die Session-Daten in eine Datenbank zu packen (MySQL InnoDB) und dann mit einem Record-Locking lesend zuzugreifen und den Lock erst mit dem Schreiben der Session-Daten aufzuheben ...
                    carpe noctem

                    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                    Kommentar


                    • #11
                      das ist ja das seltsame,
                      ich habe einen eigenen Sessionhandler (eine Klasse),
                      welche bei $session->save(); das Zeug in der DB ablegt.
                      Komischerweise haben die Seiten danach nicht die aktuellen
                      Daten.
                      Es klappt, wenn ich nach $session->save(); eine Verzögerung von 200ms einbaue
                      TBT

                      Die zwei wichtigsten Regeln für eine berufliche Karriere:
                      1. Verrate niemals alles was du weißt!


                      PHP 2 AllPatrizier II Browsergame

                      Kommentar

                      Lädt...
                      X