microtime prob

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

  • microtime prob

    moin

    ich hab n problem mit microtime. Ich hab in einer funktion ne art stoppuhr eingebaut, die mir sagt wie lange es gedauert hat ne seite auf nem server auszulesen. Schaut euch mal den code an:

    PHP-Code:
    function ping($ip) {
        
    $firsttime microtime();
        
    $conn fopen($ip'r');
        
    $xxx fread($conn,1000);
        
    fclose($conn);
        
    $secondtime microtime();
        if(
    strlen($xxx)>800) {
            
    ereg('^(.*)\.(..)',($secondtime-$firsttime),$ping);
            return 
    $ping[0];
        } else {
            return 
    false;
        }

    das script sollte ja eigentlich immer eine zahl > 0 ergeben, tuts aber nicht, $secondtime-firsttime gibt bei paar servern 0.23, 0.45, 0.xx (ms) was auch richtig ist, nur bei manchen server kommen zahlen im minus wie -0.34, -0.xx und ich hab keine ahnung wie das überhaupt möglich sein kann.

    Könnt ihr mir weiterhelfen?
    Betriebssystem: FreeBSD
    Perl [Version]: 5.8.4
    PHP [Version]: 4.3.8 / 5.0.1
    MySQL [Version]: 4.0.20

  • #2
    dasda:ereg('^(.*).(..)',($secondtime-$firsttime),$ping); ist BÖÖÖSE....

    Lass es dir erstmal so ausgeben... und danach kannst du bei den Mathe-FKTs was stöbern...
    Die Musikreview Seite

    hi, i'm a signature virus. copy me into your signature to help me spread.

    Kommentar


    • #3
      ne das hab ich vorher schon versucht, das ereg funzt schon richtig, wenn ich das direkt ausgebe kommen einfach zahlen wie -0.63881099999999990668442
      und auch solte über 0.

      Kann das sein das die microtime() funktion nich so zuverlässig ist?
      Betriebssystem: FreeBSD
      Perl [Version]: 5.8.4
      PHP [Version]: 4.3.8 / 5.0.1
      MySQL [Version]: 4.0.20

      Kommentar


      • #4
        grml ich hab mir gerade eine einfache microtime() ausgeben lassen, und zwar kommt dann folgendes raus 0.52366600 1084120425. was bedeutet der leerschlag dazwischen...
        Betriebssystem: FreeBSD
        Perl [Version]: 5.8.4
        PHP [Version]: 4.3.8 / 5.0.1
        MySQL [Version]: 4.0.20

        Kommentar


        • #5
          Ich sag nicht dass das unbedingt daran liegt, nur ist das einfach total unsauber....


          schau einfach mal hier:
          http://www.php-resource.de/forum/sho...f%FChrungszeit
          Die Musikreview Seite

          hi, i'm a signature virus. copy me into your signature to help me spread.

          Kommentar


          • #6
            vieeelen dank is schon mal alles im +

            aber jetzt noch eine frage, ich dachte microtime gibt die anzahl mikrosekunden zurück, nicht die sekunden, warum steht dann in dem thread in dem du mir angegeben hast das das sekunden wären??
            Betriebssystem: FreeBSD
            Perl [Version]: 5.8.4
            PHP [Version]: 4.3.8 / 5.0.1
            MySQL [Version]: 4.0.20

            Kommentar


            • #7
              http://www.php-resource.de/manual.ph...tion.microtime

              Les es dir mal genauer durch... und schau die fkt an die der user dadrunter gepostet hat... sollte selbstklärend sein...
              Die Musikreview Seite

              hi, i'm a signature virus. copy me into your signature to help me spread.

              Kommentar


              • #8
                jap thx, das is mir jetzt klar

                komischerweise geht die round()-funktion kein bisschen, meine funktion sieht jetzt so aus...

                PHP-Code:
                function ping($ip) {
                    
                $firsttime getmicrotime();
                    
                $conn fopen($ip'r');
                    
                $xxx fread($conn,1000);
                    
                fclose($conn);
                    (float)
                $dauer getmicrotime() - $firsttime;
                    
                $ping round($dauer,4);
                    if(
                strlen($xxx)>800) {
                        return 
                $ping;
                    } else {
                        return 
                false;
                    }

                P.S. die ereg funktion hatte ich beim ersten script auch nur genommen weil round nich funzte, es kommen immer zahlen wie 0.62670000000000003481659, 0.26929999999999998383515, 0.25380000000000002557954, usw. raus
                Zuletzt geändert von lukasschuermann; 09.05.2004, 19:23.
                Betriebssystem: FreeBSD
                Perl [Version]: 5.8.4
                PHP [Version]: 4.3.8 / 5.0.1
                MySQL [Version]: 4.0.20

                Kommentar


                • #9
                  hat keiner ne ahnung woran das liegen könnte?
                  Betriebssystem: FreeBSD
                  Perl [Version]: 5.8.4
                  PHP [Version]: 4.3.8 / 5.0.1
                  MySQL [Version]: 4.0.20

                  Kommentar

                  Lädt...
                  X