PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Reload Tabelle -> INET_ATON()



jpwfour
15.09.2009, 23:29
Was mir grad noch einfällt was immer nervig ist nachträglich machen zu müssen, wär praktisch, wenn das Grundscript schon gleich die IP Adressen als Zahl in der Datenbank behandeln würde, dementsprechend die topframe_forced.php und die content/verdienen/klick4.php angepasst wäre.

Nur mal so als Anhaltspunkt:

|Größe in KiloByte|Anzahl Einträge
vorher:|6.316,84|53.750
nachher:|3.386,08|53.458

Man kann da also mächtig einsparen, nicht nur an Platz, sondern auch an Geschwindigkeit gewinnen, da ein Index auf Zahlen einfach schneller durchsucht werden kann.

--


CREATE TABLE IF NOT EXISTS `vms_reloads` (
`ip` int(11) UNSIGNED NOT NULL default '0',
`uid` int(7) NOT NULL default '0',
`tan` varchar(32) NOT NULL default '',
`bis` int(10) NOT NULL default '0',
KEY `klick4` (`tan`,`uid`,`ip`)
) ENGINE=MyISAM;für umsteiger:

ALTER TABLE `vms_reloads` CHANGE `ip` `ip` INT( 11 ) UNSIGNED NOT NULL ##

topframe_forced.php

ON (t1.tan=t2.tan AND (t2.uid=".$_SESSION['uid']." or t2.ip=INET_ATON('".$ip."') ))...

db_query("INSERT INTO ".$db_prefix."_reloads (ip,uid,tan,bis) VALUES (INET_ATON('".$ip."'),".$_SESSION['uid'].",'".$forced['tan']."',".$new_reload.")");##
content/verdienen/klick4.php

ON (t1.tan = t2.tan AND (t2.uid = '.$_SESSION['uid'].' OR t2.ip = INET_ATON("'.$ip.'") ) AND t2.bis >= '.time().') Also eh nur minimale Veränderungen mit denk ich doch recht großem Effekt.

Gibt zwar dann natürlich Probleme mit den Addons, die darauf Aufbauen (Paidlink Bereich, Highforced-Bereich usw.) da der "Umbau" dort aber auch mit 2 kleinen Änderungen zu machen ist, kann man ja darauf einfach in der readme.txt verweisen :yes:

Btw: lässt sic auch in laufendem Betrieb gut umstellen, indem man
1. die Änderungen in den Dateien macht und erst dann
2. den SQL Query :

UPDATE vms_reloads SET ip = INET_ATON(ip)ausführt und erst dann
3. den obigen alter table query ausführt :thumb:

Gremlin
15.09.2009, 23:43
Im Prinzip guter Vorschlag hatte ich auch schon dran gedacht, aber es gibt sehr viele Addons welche auch die vms_reloads nutzen, diese wären dann alle erst einmal inkompatibel.

eRaaaa
16.09.2009, 01:06
ich hatte das vor einiger zeit auch schon ansprechen wollen, weil ich auf phpperformance im blog (http://phpperformance.de/ip-adressen-optimal-speichern/) das schon gelesen hatte. gerade auch bei dem ländercode addon würd ichs umstellen...

jpwfour
16.09.2009, 12:12
Man köntne es so machen, dass man gleich schon in der functions.lib.php in der Variable
$ip
den "long" Wert speichert, somit müsste man in den Addons etc. nichts anpassen.

Außer wenn es dann wiederum Addons gibt, die auf $ip zugreifen und das in eigenen Tabellen verwenden, wobei dann halt in varchar(15) nur die zahl gespeichert wird, was aber ja immerhin funktioniert (wenn auch platzverschwendung ist)

Also in der functions.lib.php dann:


$ip = sprintf("%u", ip2long($_SERVER['REMOTE_ADDR']));

DJschatz27
04.01.2011, 13:46
Tach ne frage gibts hierzu noch eine andere Lösung

weil ich habs eben mal getestet aber dann bin ich wegen der ip fürs klicken gesperrt oder was muß man alles ändern?

Hardy
04.01.2011, 15:35
Vielleicht INET_ATON() aus der klickdatei entfernen

DJschatz27
04.01.2011, 15:53
Danke aber das möchte nicht naja weil möchte gerne das die seite schneller aufgerufen werden kann weil mir das vor kommt als es zu langsam ist weiß ja nicht wo man noch alles optimieren kann aber für tipps bin ich immer zu haben

hankfromhelvete
04.01.2011, 16:12
[...] möchte gerne das die seite schneller aufgerufen werden kann [...]

Du kannst diverse db_querys bzw. ganze Boxen/Seiten cachen. Tutorial findest du hier (http://designerscripte.net/showthread.php?t=5851).

DJschatz27
04.01.2011, 17:02
Danke für den Tip hatt ich noch nicht drin

muh_kuh
10.01.2011, 10:20
Hallo
wie weit sollten dabei IPv6 Beachten werden ?
die php funktion kann es leider nicht
Gruß

jpwfour
10.01.2011, 11:34
IPv6 ist dabei nicht beachtet!

Was natürlich auch daran liegt, dass man in der Datenbank einen ganz anderen Spaltentyp braucht, IPv4 belegt 32 bit (4 Byte), IPv6 aber schon 128 bit (16 Bytes).

Afaik hat MySQL dafür noch keinen eigenen Spaltentyp, was meiner Meinung nach sinnvoll wäre, aber so oder so wird bei solch immensen "IP-Speicherungen" wie im Klickbereich/Reload einiges an "Platzverschwendung" durch IPv6 auf die Webbis zukommen.

Im Klickbereich kann man es noch so lösen, dass man in der Reloadtabelle nur ne ID ablegt (bei bis zu 65k Adressen reicht dann ja sogar ein smallint), und in einer anderen Tabelle die dazugehörige IP(v6) Adresse.

Für die Bettelreloads könnte das aber auch weniger optimal sein, da hier potentiell ja sehr viele verschiedene Adressen auftauchen, hm :suspicious:

Meiner Meinung nach sind die IPv6 Adressen absoluter overkill und IPv4 inkl. NAT hätte locker fürs I-Net an sich ausgereicht, wurde nur künstlich verknappt, und schließlich braucht demnächst ja jede Steckdose ihre eigene IP :biggrin1:

Evtl. missfällt der ver-4-fachte Speicherverbraucht auch noch den ISPs auf, und sie einigen sich darauf, den "Kunden" erstmal nur bestimmte Teiladressbereiche zuzuweisen (was dann sofern es nur 64 bit betrifft, auch noch die nächsten 1.000 Jahre vermutlich reicht), dann kann man das auf BIGINT UNSIGNED abbilden. Oder es gibt so eine Möglichkeit schon, hab dazu aber aktuell noch nichts gefunden.