Andreas: string microtime (void): "msec sec" - WARUM?

Hallo!
Kann mir das mal jemand erklären, warum sollte man diesen String so rum ausgeben?????? Ich z.B. will in das in die DB entragen um zu sehen welcher Eintrag der älteste ist, muß so genau wie möglich sein. Aber so kann ich das ja  nicht vergkleihcn, höchstens umständlich wenn ich den String zerpflücke....

Aber da gibt es ja noch gettimeofday (), wo die Zeit in einem Assoziativen Array speichert, den ich auslesen kann. Aber das doofe, bei usec habe ich immer 0.xxxxxx
Ich mein im Prinzip egal, da es mir nur auf den Vergleich der Zahlen ankommt und nicht auf die genaue Zeit, aber wie mache ich denn daraus eine hübsche Zeit? Also ganz normal xxxxxxxxx.xxxxxxx secs?

Grüsse
  Andreas

  1. Ich z.B. will in das in die DB entragen um zu sehen welcher Eintrag der älteste ist, muß so genau wie möglich sein. Aber so kann ich das ja  nicht vergkleihcn, höchstens umständlich wenn ich den String zerpflücke....

    So umständlich ist ein einziger Aufruf von explode() nun auch nicht.

    Aber da gibt es ja noch gettimeofday (), wo die Zeit in einem Assoziativen Array speichert, den ich auslesen kann. Aber das doofe, bei usec habe ich immer 0.xxxxxx
    Ich mein im Prinzip egal, da es mir nur auf den Vergleich der Zahlen ankommt und nicht auf die genaue Zeit, aber wie mache ich denn daraus eine hübsche Zeit? Also ganz normal xxxxxxxxx.xxxxxxx secs?

    Aus der microtime()-Seite: "Both portions of the string are returned in units of seconds.". Da microtime() und gettimeofday() beide auf derselben Systemfunktion beruhen, dürfte also auch gettimeofday() die Mikrosekunden als Sekunden, bzw. Anteil an einer Sekunde, liefern. Der Rest ist Mathematik, 5. Klasse (oder so:).

    Aber da es dir um das zeitliche Vergleichen von Datenbankeinträgen geht: Warum nimmst du nicht einfach eine auto_increment-Spalte? Wenn dir explode() schon zuviel ist, kannst du dir die Umrechnerei mit den Zeiten gleich ganz sparen und dich auf das Zählvermögen deiner Datenbank verlassen.

    Gruß,
      soenk.e

    1. Hi!
      Ja, ich hab das jetzt mit substr gemacht, und alles als eine lange Zahl. Bei der Auto ID habe ich öfter gehört, dass es passieren kann, dass man auf einmal wieder eine alte gelöschte ID bekommt, was bei mir fatal wäre, da es gerade darauf ankommt, welcher Datensatz zuerst eingetragen wurde, und ich denke bei millisekunden ist die Wahrscheinlichkeit dass sich da was überschneidet (fast) = 0.
      Grüsse
        andreas

      1. Bei der Auto ID habe ich öfter gehört, dass es passieren kann, dass man auf einmal wieder eine alte gelöschte ID bekommt,

        Das war ein MySQL-Fehler, der aber AFAIK inzwischen beseitigt wurde. Wenn ich mich recht entsinne, ging es darum, daß man eine ID doppelt bekam, wenn die letzte/höchste/neueste gelöscht wurde:

        1
        2
        3
        4

        Wenn du Datensatz 4 jetzt gelöscht hättest, bekamst du beim nächsten Mal wieder 4, statt 5. Ein eindeutiger Fehler, kein Feature :)
        Aber wie gesagt: AFAIK.

        mir fatal wäre, da es gerade darauf ankommt, welcher Datensatz zuerst eingetragen wurde, und ich denke bei millisekunden ist die Wahrscheinlichkeit dass sich da was überschneidet (fast) = 0.

        Nur der Vollständigkeit halber: Eine timestamp-Spalte in der Datenbank wäre auch noch eine Lösung (allerdings nur auf Sekundenbasis).

        Gruß,
          soenk.e

        1. Hi!
          Ja, hab das auch gehört, aber war mir nicht sicher genug. Eine Sekunde wäre auch gut gewesen, aber ich fand microsecunden 1.000.000 mal sicherer!
          Aber immer noch nicht 100%!
          Also Du bist dir 100%ig sicher, in einer Tabelle immer höhere Nummern ergeben werden, das darf NIE eine Nummer (die evtl gelöscht wurde) erneut benutzt werden, denn es kommt mir auf den ZEITPUNKT an, nicht die Eindeutigkeit!
          Und wernn irgendwann mal die ersten paar 1000 Datensätze gelöscht werden, und mysql vergibt wieder frei gewordene Nummern, habe ich ein Problem, da ich nämlich fragen würde, ob die neu eingetragene ID höher ist, als alle vorhandenen, und da bin  ich halt nicht sicher, was da irgendwann mal sein könnte, denn wenn man alle Datensätze löscht, geht es auch bei 1 los.
          Eine Mio.stel Sekunde ist meiner Meinung nach schon recht sicher!
          Wobei ich 100% sicher vor sehr sicher vorziehen würde!

          Grüsse
            Andreas

          1. Also Du bist dir 100%ig sicher, in einer Tabelle immer höhere Nummern ergeben werden, das darf NIE eine Nummer (die evtl gelöscht wurde) erneut benutzt werden, denn es kommt mir auf den ZEITPUNKT an, nicht die Eindeutigkeit!

            Das mit dem angesprochenen Fehler muß ich wohl korrigieren, denn anscheinend gehört das so.. Lies dir besser selbst nochmal die Anleitung zu CREATE TABLE durch: http://www.mysql.com/doc/C/R/CREATE_TABLE.html. Ohne exaktes  Detailwissen über die Datenbank-Interna scheint mir auto_increment dann doch nicht so sonderlich sicher zu sein.

            Eine Mio.stel Sekunde ist meiner Meinung nach schon recht sicher!
            Wobei ich 100% sicher vor sehr sicher vorziehen würde!

            Zur Einschätzung der Sicherheit gehört immer das Abwägen zwischen Möglichkeiten, nämlichen denen, die man technisch hat, und denen, die eintreffen könnten.

            Gruß,
              soenk.e