das c++ forum etwas schneller machen
-
ich wollte mal die erfahrern leute fragen ob man das forum nicht etwas schneller machen kann.
es geht um den syntaxmod, phpfunktion färben die codes und speichern das ganze in einer tabelle code_cache# # Tabellenstruktur für Tabelle `code_cache` # CREATE TABLE code_cache ( id int(11) NOT NULL default '0', last_time_used int(11) NOT NULL default '0', code mediumtext NOT NULL, PRIMARY KEY (id) ) TYPE=MyISAM;
id ist ein fingerprint/crc32 des textes und in last_time_used speicher ich den letzten zugriff, bei jeden einfügen wird der älteste eintrag gepopt
die php funktion sehen so aus
function get_from_cache($id) { global $db; $sql = "SELECT code FROM code_cache WHERE id = '".addslashes($id)."'"; if ($result = $db->sql_query($sql)) { if ($row = $db->sql_fetchrow($result)) { $sql = "UPDATE code_cache SET last_time_used = '".time()."' WHERE id = '".addslashes($id)."'"; $db->sql_query($sql); return $row['code']; } } return ISNOT_IN_CACHE; } function insert_to_cache($id, $code) { global $db; $sql = "INSERT INTO code_cache VALUES ('".addslashes($id)."', '".time()."', '".mysql_real_escape_string($code)."')"; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not insert row in code_cache', '', __LINE__, __FILE__, $sql); } $sql = "SELECT id FROM code_cache ORDER BY last_time_used ASC LIMIT 1"; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not find oldest row in code_cache', '', __LINE__, __FILE__, $sql); } $row = $db->sql_fetchrow($result); $sql = "DELETE FROM code_cache WHERE id = '".$row['id']."'"; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not delete row from code_cache', '', __LINE__, __FILE__, $sql); } }
jetzt frage ich mich soll last_time_used ein index bekommen (im grunde habe ich nur eine ahnung wozu index da sind, richtig nachgelsen in einen buch habe ich das noch nicht)
und kann vielleicht mysql das älterste datensatz-popen übernähmen?
-
kapiere das
select und dann delete nicht
kannst ja gleich deleten...und du könntest gleich das update über den letzten eintrag drüber machen.
-
Ich kapieren den ganze Codechache nicht.
Was soll der machen?
EIn Chache ist nur dann Zielführend wenn die Verarbeitung nicht länger dauert als das neu erstellen.
Es steht genug Rechnenleistung für eine etwas komplexere PHP-Funktion zur Verfügung. DIese MySQL-Abfragen dauern sicher noch länger und brauchen noch mehr Prozessorresourcen.