Was ist der richtige Weg, um konvertieren von ip-integer in php?
Also ich brauche die IP-Adressen speichern in der Datenbank, sondern speichert Sie als Stacheln ist nicht sehr effizient und nicht sehr komfortabel für meine Zwecke.
So... Wie kann ich umwandeln der ip in integer in php mit weniger Verarbeitung als möglich, weil es getan werden millionenfach am Tag.
Und natürlich, wie kann ich wieder zurück konvertieren von integet ip?
Ich weiß, das kann "gegoogelt" werden und es gibt einige einfache Lösungen - aber ich verlange für die Schnellste Möglichkeit, nicht nur für die "do X und erhalten Sie Y", weil es eigentlich ziemlich einfache Aufgabe.
- Warum nicht Sie versuchen, einige Lösungen und Teste?
- Die Chancen sind Sie nicht finden, etwas schneller als der integrierte
ip2long()
- Funktion. (Auch: warum sollte es eine Rolle?) - Felix Kling, Gut, richtige benchmarking ist nicht so einfach zu setup. Vor allem mit so einer kleinen Aufgabe.
- Wird ein float ausreichen? Wahlweise sind Sie glücklich Speicherung jedes Teil der IP-Adresse in eine separate Spalte? Ansonsten gibt es keine Möglichkeit, eine int mit verschiedenen "Fachgruppen" -
- Glauben Sie, dass
ip2long
ist eine schnelle Methode, obwohl es eines der top-Treffer in Google? Das nächste mal, versuchen Sie es zuerst mit Google. - mario, nun... vielleicht wäre es besser zu tun, in in binarry oder auf eine andere Weise weiß ich nicht über... Und ich brauche diese für ein statisctics für einige sehr beliebte Website.
- Ich nehme an, Sie sind nicht planning to support IPv6?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
ip2long()
undlong2ip()
. Sie sind die schnellsten, die Sie finden können in PHP, denn Sie sind nur auf der entsprechenden C-Funktionen.ip2long()
ist direkt auf die Oberseite der c-Funktion mit dem gleichen Namen, die selbst zusammengestellt in cool binary code, der optimiert wurde für Ihre Plattform. Wenn Sie einen Weg finden, wie man eine Funktion bekommen können, schneller als dies, sagen Sie mir 😉 Und btw: Die DB-Angabe erwähnt werden, muuuch langsamer, als beliebiger Arithmetik-Funktion. Nur vergeuden Sie nicht Ihre Zeit durch das denken über Mikro-Optimierung.Verwenden
ip2long
-- diese Funktion ist so schnell, es ist einfach nicht egal, wenn Sie nennen es eine Millionen mal am Tag. Es ist eine library-Funktion, es ist somit gut getestet und zuverlässig.Und unter Berücksichtigung der Arbeitszeit, es ist definitiv die Schnellste Lösung im ganzen Universum.
Können Sie einen INT
$ip = ip2long($ip);
Speichern in mysql:
Kannst du wieder die ip-später :
INET_NTOA(expr):