Also du kannst auch sowas machen:
Lege dir die Tabelle noch ein 2tes mal an und nenne sie z.B. table_temp;
von der Datenstruktur die aber die gleiche wie die orig Tabelle.
dein phpscript für dein cronjob könnte so aussehen:
Code:
<?php
mysql_query("INSERT INTO table_temp SELECT * FROM table_orig");
mysql_query("DELETE FROM table_orig");
mysql_query("INSERT INTO table_orig SELECT * FROM table_temp ORDER BY rang");
?>
Wenn du aber einen Server hast den du z.B. per ssh konfigurieren kannst und die Conrjobs mit crontab konfigurieren kannst dann mache das lieber so:
Lege eine sql-Datei, z.B. sortiere.sql, in der folgende Zeilen stehen
Code:
INSERT INTO table_temp SELECT * FROM table_orig;
DELETE FROM table_orig;
INSERT INTO table_orig SELECT * FROM table_temp ORDER BY rang;
Die Datei kannst du dann aufrufen in etwa damit
mysql DATENBANK < /Pfad_zu_Datei/sortiere.sql
Die Zeile brauchst du dann nur zu deinen Crons hinzufügen und ne passende Zeit davor setzen.
Versuche so viel wie möglich mit mySQL zu machen statt mit php, das ist wesentlich schneller.
Aber sinnlos ist das allemal. Wenn deine Rangliste sowieso nur einmal am Tag aktuallisiert werden soll, erzeuge doch um Mitternacht oder sonstwann einfach ne statische HTML-Datei in der alles drinne steht. Oder halt mehrere wenn nicht alle nutzer auf einer Seite angezeigt werden sollen.
Wenn du den Rang als Index setzt kannst du mit
OPTIMIZE TABLE table_orig
das sortieren lassen. Ist wahrscheinlich die bessere Variante, aber schau dazu noch mal ins Manual auf Seite 773 (deutsch pdf).