Birthday Caching Addon (RC3)

In diesem Forum können Mod-Autoren ihre Mods vorstellen, die sich noch im Entwicklungsstatus befinden. Der Einbau in Foren im produktiven Betrieb wird nicht empfohlen.
Forumsregeln
phpBB 2.0 hat das Ende seiner Lebenszeit überschritten
phpBB 2.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 2.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf phpBB 3.0, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Beitrag von easygo »

AmigaLink hat geschrieben:Bei mir nicht! :cry:
:o dann check das mal bitte -->

Update Time Control

Einfach den Code als php file speichern, die Datei in dein
Forum-Verzeichnis hochladen und aufrufen...
Zuletzt geändert von easygo am 10.09.2005 23:07, insgesamt 2-mal geändert.
John Doe
Mitglied
Beiträge: 684
Registriert: 30.03.2005 01:06

Beitrag von John Doe »

Hab ich das richtig verstanden, wenn mir Dein Testscript

Code: Alles auswählen

Newest User Registration Date

UNIX Time:
Time Format: 01.01.1970, 01:00:00

zurückgibt, dass das dann nicht funktioniert ?
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Beitrag von easygo »

Jo... also wenn das so ist (vanilla phpbb)

Code: Alles auswählen

#
#-----[ OPEN ]------------------------------------------------
#
includes/functions.php

#
#-----[ FIND ]------------------------------------------------
#
		case 'newestuser':
			$sql = "SELECT user_id, username

# 
#-----[ REPLACE WITH ]------------------------------------------ 
#
		case 'newestuser':
			$sql = "SELECT user_id, username, user_regdate

#
#-----[ SAVE/CLOSE FILE ]--------------------------------
#
# EoM
Hab ich wohl ein bisschen viel vorausgesetzt. :oops:

Asche über mein Haupt. :D easy
Benutzeravatar
AmigaLink
Mitglied
Beiträge: 1417
Registriert: 09.06.2003 21:56
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Ja, da bin ich schon selber hintergekommen. Aber leider nützt mir das nichts, den ich habe den CH 2.0.5 rc2 installiert, der wiederum diese Daten Cached und wie dieser Cache Funktioniert hab ich noch nicht kapiert. :(
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Beitrag von easygo »

Kannst du ja testweise mal auskommentieren den CH cache...

Code: Alles auswählen

# 
#-----[ OPEN ]------------------------------------------------ 
# 
includes/functions_cache.php 

# 
#-----[ FIND ]------------------------------------------------ 
# 
define('CACHE_WORDS', true);
define('CACHE_THEMES', true);
define('CACHE_SMILIES', true);
define('CACHE_RANKS', true);
define('CACHE_BIRTHDAY', true);
define('CACHE_TREE', true);

# 
#-----[ REPLACE WITH ]------------------------------------------ 
# 
/*
define('CACHE_WORDS', true);
define('CACHE_THEMES', true);
define('CACHE_SMILIES', true);
define('CACHE_RANKS', true);
define('CACHE_BIRTHDAY', true);
define('CACHE_TREE', true);
*/

# 
#-----[ SAVE/CLOSE FILE ]-------------------------------- 
# 
# EoM
Ich seh aber net, wo sich die 2 in die Quere kommen...

function get_db_stat($mode) und CH 2.0.5 rc2
Benutzeravatar
AmigaLink
Mitglied
Beiträge: 1417
Registriert: 09.06.2003 21:56
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Den cache der Userdaten kann man in der functions_cache.php nicht abschalten. :(

Testweise hab ich mal in der functions.php diesen teil auskommentiert

Code: Alles auswählen

//-- mod : cache -----------------------------------------------------------------------------------
//-- add
	global $board_config;

	// first inits
	if ( !isset($board_config['max_users']) || !isset($board_config['record_last_user_id']) || !isset($board_config['record_last_username']) )
	{
		users_stats();
		cache_birthday();
	}
	if ( !isset($board_config['max_posts']) || !isset($board_config['max_topics']) )
	{
		board_stats();
	}
	switch ( $mode )
	{
		case 'usercount':
			return intval($board_config['max_users']);
			break;
		case 'newestuser':
			$row = array( 'user_id' => intval($board_config['record_last_user_id']), 'username' => $board_config['record_last_username']);
			return $row;
			break;
		case 'postcount':
			return intval($board_config['max_posts']);
			break;
		case 'topiccount':
			return intval($board_config['max_topics']);
			break;
	}
//-- fin mod : cache -------------------------------------------------------------------------------
woraufhin es auch funktioniert. Aber das ist ja nicht der Sinn der sache! :(
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Beitrag von easygo »

Hast Recht! Das wär 2matsch. :D

Langt bestimmt, wenn du die Zeile auskommentierst

Code: Alles auswählen

     users_stats(); 
Oder? Vielleicht gibts ja noch ne andere Möglichkeit schnell
an newest_regdate zu kommen, mal schaun...
Benutzeravatar
AmigaLink
Mitglied
Beiträge: 1417
Registriert: 09.06.2003 21:56
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Nö, bringt nix.
Meine Experimente bezüglich dieses Caches scheitern aber nicht zum erstem mal. :(

Ich hab deinen Code jetzt so modifiziert und er läuft bei mir einwandfrei. :)

Code: Alles auswählen

$cache_bday_file = $phpbb_root_path . "cache/bday/bday_" . $board_config['board_timezone'] . ".php"; 
if (@file_exists($cache_bday_file)) 
{
	$sql = "SELECT user_regdate
		FROM " . USERS_TABLE . "
		WHERE user_id <> " . ANONYMOUS . " AND user_active = 1
		ORDER BY user_id DESC
		LIMIT 1";
	$result = $db->sql_query($sql);
	while ($row = mysql_fetch_array($result))
	{
		$newest_regdate = $row['user_regdate'];
	}

	$last_update_time = @filemtime($cache_bday_file); 
	$valid = (((date('Yz',time()) - date('Yz',$last_update_time))<1) && ((time() - $newest_regdate) > (time() - $last_update_time) )) ? true : false;  
} 
else 
{ 
   $valid = false; 
} 
Damit wird kein anderer Mod benötigt! (Auch kein TODAY AT) :)

// EDIT
Code korregiert
Zuletzt geändert von AmigaLink am 27.04.2005 15:17, insgesamt 1-mal geändert.
Benutzeravatar
easygo
Mitglied
Beiträge: 2170
Registriert: 03.09.2004 13:45
Kontaktdaten:

Beitrag von easygo »

AmigaLink hat geschrieben:Ich hab deinen Code jetzt so modifiziert und er läuft bei mir einwandfrei.


Das ist die Hauptsache! :grin: Gute Lösung, aber warum YzH ?

Y = Jahr
z = Tag eines Jahres
H = 24 Stunden - Format

Code: Alles auswählen

(((date('YzH',time()) - date('YzH',$last_update_time))<1)
Würde bedeuten, das Update erfolgt stündlich. Wozu?

Besser wäre hier...

Code: Alles auswählen

(((date('Ymd',time()) - date('Ymd',$last_update_time)) == 0)
oder von mir aus auch...

Code: Alles auswählen

(((date('Yz',time()) - date('Yz',$last_update_time)) == 0)
... weil dann hätten wir das Update 1x täglich jeweils beim ersten
Besuch pro Zeitzone mit Ausnahme von newest_regdate.

Dein Modify (mit einer Query mehr) sollte dann ungefähr so aussehn...

Code: Alles auswählen

$cache_bday_file = $phpbb_root_path . "cache/bday/bday_" . $board_config['board_timezone'] . ".php";
if (@file_exists($cache_bday_file))
{
	$sql = "SELECT user_regdate
		FROM " . USERS_TABLE . "
		WHERE user_id <> " . ANONYMOUS . " AND user_active = 1
		ORDER BY user_id DESC
    LIMIT 0,1";
	$result = $db->sql_query($sql);
	while ($row = mysql_fetch_array($result))
	{
		$newest_regdate = $row['user_regdate'];
	}
	$db->sql_freeresult($result);

	$last_update_time = @filemtime($cache_bday_file);
	$valid = (((date('Yz',time()) - date('Yz',$last_update_time)) == 0) && ((time() - $newest_regdate) > (time() - $last_update_time) )) ? true : false;
}
else
{
   $valid = false;
}
Könnte passen oder was meinst du?
Benutzeravatar
AmigaLink
Mitglied
Beiträge: 1417
Registriert: 09.06.2003 21:56
Wohnort: NRW
Kontaktdaten:

Beitrag von AmigaLink »

Jetzt ist mir das gleiche passiert wie dir (weiter oben). :-? Das H war natürlich nur zum Testen der aktualisierung!

<1 übrigens für den Fall das daß Cachefile älter als 1 Tag ist. Mit ==0 hätteste in dem Fall ein Problem. ;)

// EDIT

Hab meinen Code mal Korregiert.
Ausserdem gibt es auf meiner Seite eine kleine zusammenfassung des ganzen. :)
Antworten

Zurück zu „phpBB 2.0: Mods in Entwicklung“