In meinem CMS mache ich manchmal redundante Abfragen, weil alles unabhängig ist. Ist es in Ordnung, solche Abfragen zwischenzuspeichern ?:"Caching" mySQL-Abfragen, ist das eine gute Übung?
global $cache_query, $cache_result;
if(!is_array($cache_query) || !is_array($cache_result) || !in_array($q,$cache_query))
{//The query is new.
$r = query_($q);
$cache_query[] = $q;
$cache_result[] = $r;
}
else
{//The query is cached.
foreach($cache_query as $k=>$c) // Cycle through my cached queries to find the key. Is there an getElementKey function?
if($c == $q) {
if(@mysql_fetch_array($cache_result[$k])) // is the resource is still valid?
mysql_data_seek($cache_result[$k], 0); // rewind the pointer
else
$cache_result[$k] = query_($q); // reset the resource
$r = $cache_result[$k];
break;
}
}
return $r;
ODER ist eine bessere Praxis, um jedes Mal eine neue Abfrage zu machen? $q
ist meine Abfrage, und die Funktion query_()
gibt eine Ressource zurück und protokolliert, wenn etwas schief geht.
Ich war besorgt, dass ich einen Index zu lange hätte. Oder ein '' 'in der Abfrage vorhanden. – Jason
+1. Ein Vorschlag/Verbesserung: Da SQL-Abfragen ziemlich groß werden können, kann man den Hash-Wert der SQL-Abfrage berechnen, anstatt die Abfrage selbst als Schlüssel im assoziieren Array – Ronnis
@Ronnis, ich mag das. Gute Idee. – Jason