Randshop - Anzahl der Datenbankabfragen reduzieren

Die Funktion GetDefaultLanguageID in /includes/functions.language.inc.php liefert die Standard-Sprachen-Id. Bei einem Aufruf einer Shopseite wird diese Funktion von 25 bis zu knapp 100mal aufgerufen. Dabei wird jedesmal per sql die Datenbank nach der Id der Standardsprache angefragt.
Ist zwar nur eine Mini Sql-Anfrage aber immerhin muss der Server sie entgegennehmen, ausführen und beantworten.
Ich hab nun im Code dieser Funktion eine statische Variable eingebaut, die nur beim ersten Aufruf einmal gefüllt wird und bei den folgenden Anfragen die id sofort liefern kann, ohne die Datenbank erneut anzufragen.
Bei wenig Last auf dem Server ist die Verbesserung fast nicht messbar, könnte bei stärkerer Auslastung aber schnell anders aussehen...

Der geänderte Code sieht jetzt so aus:

function GetDefaultLanguageID() {
       
       static $language_id ;
       
       if (!isset($language_id)) {
                         
          $SQLString = 'SELECT ';
          $SQLString .= TABLE_LANGUAGE . '.language_id ';
          $SQLString .= 'FROM ';
          $SQLString .= TABLE_LANGUAGE . ' ';
          $SQLString .= 'WHERE ';
          $SQLString .= TABLE_LANGUAGE . '.language_standard = 1 ';
       
          $LanguageObject = mysql_fetch_object(mysql_query($SQLString));
         $language_id = $LanguageObject->language_id;
        
      }
     
       return  $language_id;

    }

Das funktioniert in allen randshop-Versionen vor der 2.0, ab da ist es im randshop mit drin.

Kommentar abgeben:

Kommentare:

Kommentar von stf |

Funzt das auch in der Version 1.6?

Antwort von Magnus Geisler

Ja, bei allen Versionen vor 2.0. Danke, habs oben ergänzt.

viele Grüße

Magnus