• 25.06.2024, 05:41
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Lieber Besucher, herzlich willkommen bei: Aqua Computer Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

php source code optimierung?

Dienstag, 20. Juli 2004, 21:03

ich habe nen script geschrieben welches in der log datei von ut2004 nach spieler ids/nicknames sucht und diese in eine datenbank einträgt, nach dem schema:
id            | nicknames
3424425   | name1 name2 name3

dies wollte ich nun gerne noch optimieren, um den source code noch etwas kürzer zu halten, bzw damit das script evtl schneller ausgeführt wird. das habe ich nun schon getan, jedoch bin ich nicht wirklich gut in php, und fände es ganz nett wenn ihr mir noch ein paar tips geben könntet :)

also, das ist der source code:
http://nopaste.php-q.net/72708

da is nen beispiel einer log datei welche eingelesen wird:
http://4noobs.de/low_server.log

Re: php source code optimierung?

Dienstag, 20. Juli 2004, 22:20

wieviele ids kommen denn so vor?
dein SELECT * holt schon zuviel daten bzw. werden die ja nicht immer gebraucht. db-queries sind sehr resourcenhungrig. es könnte sich lohnen, zuerst ein SELECT id zu machen und alle ids in einem array zwischenzuspeichen. dann kannste das bei jeder zeile prüfen und machst erst nen query, wenn du auch wirklich den datensatz haben willst.

Re: php source code optimierung?

Dienstag, 20. Juli 2004, 22:35

also, hier ist die ausgabe der datenbank: http://4noobs.de/ut2k4.mix.php
also im moment 263 ids

ich habe hier z.b. ne 12mb log datei, in dieser befinden sich ca 200 verschiedene ids, also es sind verhältnismäßig wenig ids in einer datei, und die meisten ids werden nurnoch ergänzt, wenn ich eine log datei erstmal eingelesen habe. also würden oft zwei selects ausgeführt.
es würde sich demnach nur lohnen wenn ein "select id" + "select name" gleich lange dauert wie ein "select *", weil das * währe ja id,name, da in der datenbank nicht mehr spalten vorhanden sind. jedoch denke ich mal das dies dann insgesamt länger dauern wird

ich hab mir deine antwort gerade nochma durchgelesen, vorher hatte ich das misverstanden ;D
wie bekomm ich das alles in nen array?

Re: php source code optimierung?

Mittwoch, 21. Juli 2004, 02:06

öhm, ich weiß nicht, ob wir uns da jetzt verstehen...

also du machst ja für jede zeile einen neuen query um festzustellen, ob die id vorhanden ist. d.h. die zahl dieser queries ist gleich der zahl der zeilen.
wenn du aber bereits vor dem loop durch das logfile in EINEM query alle ids holst und in ein array packst, bleibt es immer bei 1, egal wieviele zeilen das sind.
dafür musst du allerdings bei einer id-zeile erneut einen query auf den namen machen, was aber im endeffekt wohl höchstens einen query insgesamt mehr (den für die ids) bedeutet, wenn jede zeile eine id enthalten sollte. da dies aber weit seltener auftritt, optimierst du hier sehr gut.
zusätzlich kannst du (je nach datenmenge) auch einfach am anfang die ids UND die namen dazu holen, dann hast du selbst im falle von gefundenen ids insgesamt nur ein select-query.

mehrere ids (und namen) holst du wie folgt:

Quellcode

1
2
3
4
5
$data = array();  // hier kommen 2er-tupel (id, name) rein
$result = mysql_query('SELECT id, name FROM mix;');
while ($row = mysql_fetch_assoc($result)) {
    $data[] = $row;
}


ach und äh, die zeilennummern sind irgendwie in ner anderen höhe als die codezeilen... wie sinnfrei.

Re: php source code optimierung?

Mittwoch, 21. Juli 2004, 19:30

und wie lese ich dann z.b. die ids aus $data aus? weil $data['id'] geht nicht


habs hinbekommen :)