Seite 1 von 1

[MOD] Cache System für Renomme MOD

Verfasst: 31.12.2006 15:58
von bgx

Code: Alles auswählen

##############################################################
## MOD Title: Renommee / Reputation - System Cache Addon
## MOD Author: BG x < phpbb@springenderhund.de > (Tobias Hau) http://www.springenderhund.de
## MOD Description: 
##                  Fügt zum Renommee MOD ein Cachesystem hinzu und spart somit ca. 50 SQL zugriffe pro Seite
##                  
##                  
## MOD Version: 0.1.0
##
## Installation Level: Easy
## Installation Time: 5 Minutes
##
## Files To Edit:
##                includes/functions.php
##                renommee.php
##                admin/admin_renommee.php
##                admin/admin_renommee_rang_edit.php
##		  admin/admin_users.php
##
## Included Files: 
##		  n/a
##
##############################################################
## Author Notes:
## 
##
##############################################################
## MOD History:
## 
##   2006-11-01 - Version 0.1.0
##      - First official version
##   2007-01-02 - Version 0.1.1
##      - Fix: Update cache when userdata changes in ACP
##
##############################################################
## Bevor dieser Mod in das Forum integriert wird, sollten alle zu verändernden Daten gesichert werden!
##
## //
##
## Before Adding This MOD To Your Forum, You Should Back Up All Files Related To This MOD
##############################################################
Hier zum Download:
http://www.springenderhund.de/topic,312 ... e-mod.html

Für Suche: SQL Cache System Renommee beschleunigen

Verfasst: 02.01.2007 15:59
von Würzi
Hallo :grin:

Also wenn dir schon keiner ne Antwort gibt, dann nun hier:

Danke :P
Ich habe es zum testen mal in mein Testboard eingebaut.

1. Kannst du evtl hier mal beschreiben, ob da was passiert, wenn ein user gelöscht wird.
2. Wenn ich die Punkte eines Users manuell im ACP ändere?

Verfasst: 02.01.2007 19:24
von bgx
Gerne!

Also wenn du einen Benutzer löschst, solltest du natürlich auch folgenden code integrieren, der das cachefile mitlöscht:

Code: Alles auswählen

if ( file_exists($phpbb_root_path . 'cache/renom/ren-user' . $user_id .'.php') ){
    if ( ! unlink ($phpbb_root_path . 'cache/renom/ren-user' . $user_id .'.php') )
    {
      message_die(GENERAL_ERROR, "Failed to delete to cache/renomee.$phpEx", "", __LINE__, __FILE__, "");
    }}
Hmm manuelle Änderung im ACP geht auch? Dann sollte dieser Code dort auch hinterlegt werden. Anders wird es erst nach 10h Aktualisiert, wenn ich es richtig im Kopf habe. Werde die Geschichte aber noch etwas verfeinern und ggf. in nur ein Cachefile auslagern. :wink:

Verfasst: 02.01.2007 19:32
von Würzi
Ja schön nur wo den Teil integrieren? :lol:

Also ich find den Cache echt nicht schlecht :wink:

Aber du hast es gemerkt...
Etwas verfeinern wäre evtl noch drin, wenn du es kannst und Zeit hast.

Denn....
* Ich lösche durch eine mod alle User welche länger als 6 Mon nicht online waren.
* Im ACP kann man auf Userverwaltung doch auch Usern manuell Punkte bzw. Bewertungen geben oder verändern.

Oder hab ich da was anderes :o
Ich habe hier monatelang nicht rein geguckt. :-?

Verfasst: 02.01.2007 21:23
von bgx
Ja du hast recht, ist aber eh nicht so schlimm, da der cache im moment eh alle 10h neu aufgebaut wird.

Also für die direkte Übername der geänderten Renommeewerte sucht du in der admin_users.php nach

Code: Alles auswählen

      $sql = "UPDATE " . USERS_TABLE . "
				SET " . $username_sql . $passwd_sql . "user_email = '" . str_replace("\'", "''", $email) . "', user_icq = '" . str_replace("\'", "''", $icq) . "', user_website = '" . str_replace("\'", "''", $website) . "', user_occ = '" . str_replace("\'", "''", $occupation) . "', user_from = '" . str_replace("\'", "''", $location) . "', user_interests = '" . str_replace("\'", "''", $interests) . "', user_vname = '" . str_replace("\'", "''", $vname) . "', user_nname = '" . str_replace("\'", "''", $nname) . "', user_plz = '" . str_replace("\'", "''", $plz) . "', user_bland = '" . str_replace("\'", "''", $bland) . "', user_land = '" . str_replace("\'", "''", $land) . "', user_hunde = '" . str_replace("\'", "''", $hunde) . "', user_birthday='$birthday', user_next_birthday_greeting=$next_birthday_greeting, user_sig = '" . str_replace("\'", "''", $signature) . "', user_viewemail = $viewemail, user_aim = '" . str_replace("\'", "''", $aim) . "', user_yim = '" . str_replace("\'", "''", $yim) . "', user_msnm = '" . str_replace("\'", "''", $msn) . "', user_attachsig = $attachsig, user_sig_bbcode_uid = '$signature_bbcode_uid', user_allowsmile = $allowsmilies, user_allowhtml = $allowhtml, user_allowavatar = $user_allowavatar, user_allowsignature = $user_allowsignature, user_allowbbcode = $allowbbcode, user_allow_viewonline = $allowviewonline, user_notify = $notifyreply, renommee_gesamt = $renommee, allow_renommee = $allow_renommee, user_allow_pm = $user_allowpm, user_notify_pm = $notifypm, user_popup_pm = $popuppm, user_lang = '" . str_replace("\'", "''", $user_lang) . "', user_style = $user_style, user_timezone = $user_timezone, user_dateformat = '" . str_replace("\'", "''", $user_dateformat) . "', user_active = $user_status, user_warnings = $user_ycard, user_rank = $user_rank, user_gender = '$gender'" . $avatar_sql . "
				WHERE user_id = $user_id";
und fügst danach

Code: Alles auswählen

if ( file_exists($phpbb_root_path . 'cache/renom/ren-user' . $user_id .'.php') ){
    if ( ! unlink ($phpbb_root_path . 'cache/renom/ren-user' . $user_id .'.php') )
    {
      message_die(GENERAL_ERROR, "Failed to delete to cache/renomee.$phpEx", "", __LINE__, __FILE__, "");
    }}
ein.

Hab den Mod auf meiner Seite editiert!

P.S.: Dort kann man auch als Gast schreiben!

Verfasst: 03.01.2007 00:54
von Würzi
Danke ich hab das Cachesystem nun mal richtig online gestellt. :wink:

Sind das wirklich 50 SQL Anfragen, die dadurch weniger sind? :o
Also langsam war mein Forum nicht und ich sehe ja unten wieviel SQL Queries laufen bei mir. :D

Verfasst: 03.01.2007 08:00
von bgx
Na in der viewtopic.php steht folgender Code:

Code: Alles auswählen

$renommee_anzeige = renommee_anzeige($poster_id, $postrow[$i]['post_id'], 1);
Dieser wird bei jedem Beitrag aufgerufen. In der functions.php wird in der Funktion renommee_anzeigen 4 mal auf die Datenbank zugegriffen.

Das wären bei 15 Post pro Seite mal 4, 60 Queries!

:wink: