Zeit optimieren: fsockopen | fgets

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

  • Zeit optimieren: fsockopen | fgets

    Hallo,
    ich habe mal bei mein Script die Zeit gemessen. Die ein Klasse hatte ich glaube ich auch von den Scriptschnipseln und mir viel da was auf.
    Der folgende Schnipsel dauert bei mir immer über 0,07 Sekunden.
    Ich finde das ganz schön viel.
    PHP-Code:
            $this->_fp fsockopen(($this->_protocol == 'https' 'ssl://' '') . $this->_host$this->_port); // fetch        
            
    $response  ""
            if (
    is_resource($this->_fp)) {
                
    fputs($this->_fp$req);
                while(!
    feof($this->_fp)) $response .= fgets($this->_fp,4096);   
                
    fclose($this->_fp);                             
            } 
    Die meiste Zeit ca. 90 / 95 % hält sich hier auf:

    while(!feof($this->_fp)) $response .= fgets($this->_fp,4096);

    Kann man das nicht irgendwie optimieren, das es schneller läuft?
    Zuletzt geändert von martinm79; 04.01.2008, 09:55.
    Gut geraten ist halb gewußt.

  • #2
    Wie schnell reagiert denn der Host, zu dem du da eine Verbindung herstellst?

    Kommentar


    • #3
      Wie meinst du das genau? Also mit nem Ping komm ich auf 22 ms.
      Gut geraten ist halb gewußt.

      Kommentar


      • #4
        Na wenn der fremde Host 0,7s zum Antworten braucht kann dein Skript schon mal nicht schneller sein...

        Ping != Service-Anfrage

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          Das script geht ja nun jede Zeile durch.

          fputs($this->_fp, $req);
          while(!feof($this->_fp)) $response .= fgets($this->_fp,4096);
          fclose($this->_fp);

          Also würde es ja auch was bringen wenn ich den HTML Quellcode ohne Zeilenumbrüche sende?
          Gut geraten ist halb gewußt.

          Kommentar


          • #6
            Also würde es ja auch was bringen wenn ich den HTML Quellcode ohne Zeilenumbrüche sende?
            Oder du fread verwendest!

            Kommentar


            • #7
              Der Sender ist auch von dir?

              Kommentar


              • #8
                Ja, fread stand vorher drinne. Ich habe fgets genommen weil ich das testen wollte, aber die zeit blieb gleich.
                In wie weit ist fread besser? Ein großen Unterschied hatte ich Zeitlich nicht bemerkt.
                Aber kann ich ja wieder nehmen.

                Ja, der Sender bin ich. Also dahin, wohin fsockopen verbindet, das bin ich.
                Gut geraten ist halb gewußt.

                Kommentar


                • #9
                  fread ließt nicht nur zeilenweise!
                  Miss doch mal die Zeit für einige wenige Byte und schau dir das Ergebnis an.
                  PHP-Code:
                  $time = array();
                  while(!
                  feof($this->_fp)) {
                      
                  $start microtimetrue );
                      
                  $response .= fgets($this->_fp100 );
                      
                  $time[] = microtimetrue ) - $start;

                  Würde mich mal interessieren, wie das zeitlich verläuft. Vielleicht kann man ausmachen, ob der Server bei der ersten Anfrage recht lange benötigt oder die durchschnittliche Übertragung einfach entsprechend langsam ist.
                  Zuletzt geändert von PHP-Desaster; 04.01.2008, 13:03.

                  Kommentar


                  • #10
                    Gute Idee.

                    Der Code:
                    PHP-Code:
                    if (is_resource($this->_fp)) {
                        
                    fwrite($this->_fp$req);
                        
                    $time = array();
                        while(!
                    feof($this->_fp)) {
                            
                    $start array_sum(explode(" ",microtime()));
                            
                    $response .= fread($this->_fp4096); 
                            
                    $time[] = number_format(array_sum(explode(" ",microtime()))-$start6","".");   
                        }
                        
                    print_r($time);
                        
                    fclose($this->_fp);                                     

                    Das Ergenbnis:
                    PHP-Code:
                    Array
                    (
                        [
                    0] => 0,078094
                        
                    [1] => 0,027768
                        
                    [2] => 0,000062

                    Die meiste Zeit frist ja auch der erste Durchlauf.
                    Ich wüßte nicht wie ich das noch optimieren könnte.
                    Zuletzt geändert von martinm79; 04.01.2008, 13:37.
                    Gut geraten ist halb gewußt.

                    Kommentar


                    • #11
                      Miss doch bitte auch mal auf Senderseite. Wenn dort zum Beispiel sowas abläuft, ist alles klar.
                      Code:
                      sleep(0.7);
                      writeln();
                      sleep(0.2);
                      writeln();
                      writeln();

                      Kommentar


                      • #12
                        Na auf der Senderseite lasse ich mir einfach alles mit echo ohne Zeitverzögerung direkt ausgeben. mhh.
                        Gut geraten ist halb gewußt.

                        Kommentar


                        • #13
                          Was denn ausgeben? Es ist doch sicher keine statische Seite sondern ein Script. Ohne sleep(), aber vielleicht mit mysql_query() ...

                          Kommentar


                          • #14
                            Achso sorry, jetzt weiß ich worauf du hinaus wolltest.
                            Also ein Teil ist statisch, ein Teil mysql_query.
                            Na ich teste auch da mal die Scriptzeit.
                            Gut geraten ist halb gewußt.

                            Kommentar

                            Lädt...
                            X