anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Mo 09 Jun, 2025 13:08

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 44 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3  Nächste
Autor Nachricht
 Betreff des Beitrags: Re: Cachehandler
BeitragVerfasst: Sa 12 Jan, 2008 18:50 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
System ist keine Funktion, sondern eine Klasse.

Es kann aber gut sein, dass dein Editor Klassen mit derselben Farbe einfärbt, wie er auch Funktionen anpinselt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cachehandler
BeitragVerfasst: Sa 12 Jan, 2008 19:13 
Offline
Newbie

Registriert: Mo 05 Nov, 2007 15:39
Beiträge: 2
Dass es hier eine Klasse ist weis ich wohl. Wusste nur nicht, dass mein Editor auch Klassen hervorhebt, dachte es sei eine vordefinierte Funktion.
Aber wieso wird hier dann eine Standardklasse überschrieben? Wozu ist die Systemklasse normal gut?
Mein Editor hebt selbstdefinierte Funktionen und Klassen nicht hervor, nur Standardklassen und -funktionen die von PHP vordefiniert sind. Das hat mich eben auch etwas verwirrt.
Ich denke nicht dass es schlimm ist hier die Klasse zu überschreiben, es funktioniert ja. Aber ich möchte halt wissen warum dieser Klassenname gewählt wurde.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cachehandler
BeitragVerfasst: Sa 12 Jan, 2008 19:18 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Falkentavio hat geschrieben:
Dass es hier eine Klasse ist weis ich wohl. Wusste nur nicht, dass mein Editor auch Klassen hervorhebt, dachte es sei eine vordefinierte Funktion.
Aber wieso wird hier dann eine Standardklasse überschrieben? Wozu ist die Systemklasse normal gut?
Mein Editor hebt selbstdefinierte Funktionen und Klassen nicht hervor, nur Standardklassen und -funktionen die von PHP vordefiniert sind. Das hat mich eben auch etwas verwirrt.
Ich denke nicht dass es schlimm ist hier die Klasse zu überschreiben, es funktioniert ja. Aber ich möchte halt wissen warum dieser Klassenname gewählt wurde.


Es gibt keine Klasse System. Egal, welches Addon man hat o.O System ist, zumindest nach PHP-Doku, nicht mal ein reserviertes Wort. Da hat wohl ein Editor bei dem Namen gepatzt ;)
Oder er verwechselt es mit der Funktion system.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cachehandler
BeitragVerfasst: Sa 19 Jan, 2008 22:23 
Offline
Newbie
Benutzeravatar

Registriert: Di 15 Jan, 2008 17:01
Beiträge: 5
Hallo!

Ist das Cachen statt mit der OOP nicht auch mit ganz simplen Dateioperationen wie fopen, fread, fwrite möglich?

_________________
Ney gentle Romeo, we must have you dance...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cachehandler
BeitragVerfasst: Sa 19 Jan, 2008 23:04 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Türlich. Der Cachehandler verpackt diese 3 Funktionen (Nun gut, eigentlich 2, file_get_contents() und file_put_contents()) und organisiert alles andere. Das einzig andere, was noch halbwegs Sinn macht, ist, das ganze in Funktionen zu speichern - aber OOP ist es schöner.
Sowieso wirst du um PHP5 nicht mehr rumkommen. PHP4 ist obsolet. Eingestellt.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cachehandler
BeitragVerfasst: So 20 Jan, 2008 13:15 
Offline
Newbie
Benutzeravatar

Registriert: Di 15 Jan, 2008 17:01
Beiträge: 5
Ok, danke erstmal.

Doch leider bin ich in PHP-OOP nicht sonderlich versiert. Könnte mir jemand aus dieser Misére heraus helfen und eine kleine Hilfestellung in Form von einem kleinen Tutorial geben?

_________________
Ney gentle Romeo, we must have you dance...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cachehandler
BeitragVerfasst: So 20 Jan, 2008 18:27 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
http://tut.php-quake.net/klassen.html
Daas könnte dir eventuell weiterhelfen ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cachehandler
BeitragVerfasst: So 20 Jan, 2008 19:47 
Offline
Newbie
Benutzeravatar

Registriert: Di 15 Jan, 2008 17:01
Beiträge: 5
Vielen Dank :) Ich schau mal wie weit ich klar komm

_________________
Ney gentle Romeo, we must have you dance...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cachehandler
BeitragVerfasst: Mo 18 Feb, 2008 21:20 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
Update
.. auf Version 2.1. Das einzige, was sich für euch geändert hat, ist das Singleton-Muster und das wegfallen der (sinnlosen) Object-Registry.

Ein $DataCache = System::getObject('datacache'); kann nun mit einem $DataCache = Datacache::getInstance(); ersetzt werden. Es entfallen dabei einige Zeichen und eine Zeile Code, zudem wird verhindert, dass es zwei Instanzen gibt. Ein $DataCache = new Datacahe() ist nun aber unmöglich geworden. Das heisst, es sind alle Änderungen nochmal zu machen, die alten sind zu löschen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cachehandler
BeitragVerfasst: Di 19 Feb, 2008 14:07 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Mo 24 Apr, 2006 18:21
Beiträge: 408
Geschlecht: Männlich
LoGD: http://localhost
$this->bbcode_second_pass_code('', '
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\logd\dbwrapper.php on line 91

Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\logd\dbwrapper.php on line 130

INSERT INTO settings (setting,value) VALUES ("defaultlanguage","en")

Duplicate entry 'defaultlanguage' for key 1
')

Und nun? ^^ habe versucht, die settings zu cachen...

_________________
Mal wieder da...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cachehandler
BeitragVerfasst: Di 19 Feb, 2008 14:12 
Offline
Freak
Freak

Registriert: Mo 06 Sep, 2004 15:17
Beiträge: 3236
Geschlecht: Männlich
Montekar hat geschrieben:
$this->bbcode_second_pass_code('', '[...]
INSERT INTO settings (setting,value) VALUES ("defaultlanguage","en")

Duplicate entry 'defaultlanguage' for key 1
')

Und nun? ^^ habe versucht, die settings zu cachen...

Fehlermeldungen lesen u. verstehen?!

Es wird dir doch genau beschieben, wo das Problem besteht, oder nicht? - Denn anscheinend gibt es ein Problem, beim Hinzufügen des Datensatzes "defaultlanguage", weil dieser wohl bereits vorhanden ist. :roll: :nene:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cachehandler
BeitragVerfasst: Di 19 Feb, 2008 14:29 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Mo 24 Apr, 2006 18:21
Beiträge: 408
Geschlecht: Männlich
LoGD: http://localhost
Kevz hat geschrieben:
Es wird dir doch genau beschieben, wo das Problem besteht, oder nicht? - Denn anscheinend gibt es ein Problem, beim Hinzufügen des Datensatzes "defaultlanguage", weil dieser wohl bereits vorhanden ist. :roll: :nene:


Danke für die Hilfe, jetzt, wo ich die Fehlermeldung erklärt bekommen habe, weiß ich natürlich, warum es nicht geht. :nene:

€dit: Problem gelöst, ist wirklich toll Eliwood ;)
€dit²: Wodurch ersetze ich eigentlich db_fetch_assoc und db_num_rows? Denn diese Funtkionen scheinen mit dem Inhalt der Cache-Datei nicht zu funktionieren...

_________________
Mal wieder da...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cachehandler
BeitragVerfasst: Di 19 Feb, 2008 14:59 
Offline
Freak
Freak

Registriert: Mo 06 Sep, 2004 15:17
Beiträge: 3236
Geschlecht: Männlich
Montekar hat geschrieben:
[...]
€dit: Problem gelöst, ist wirklich toll Eliwood ;)

Dann erkläre uns doch noch bitte zu guter Letzt, woran es denn gelegen hat. Damit auch andere wissen, falls diese das gleiche Problem haben, wie man es lösen kann. Wäre sehr Informativ und Kooperativ.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cachehandler
BeitragVerfasst: Di 19 Feb, 2008 15:02 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Mo 24 Apr, 2006 18:21
Beiträge: 408
Geschlecht: Männlich
LoGD: http://localhost
Kevz hat geschrieben:
Montekar hat geschrieben:
[...]
€dit: Problem gelöst, ist wirklich toll Eliwood ;)

Dann erkläre uns doch noch bitte zu guter Letzt, woran es denn gelegen hat. Damit auch andere wissen, falls diese das gleiche Problem haben, wie man es lösen kann. Wäre sehr Informativ und Kooperativ.


Ich hatte nicht bedacht, dass ich eine foreach-Schleife verwenden muss.

_________________
Mal wieder da...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cachehandler
BeitragVerfasst: Di 19 Feb, 2008 15:36 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3925
Wohnort: Basel
Geschlecht: Männlich
db_dached_query() verhält sich gleich, wie das Vorbild pdoresult::fetchAll(). Es gibt ein Array zurück mit allen Datensätzen, die der Query gefunden hat. Das sollte schon anhand der Variablenbenennung im Beispielcode logisch sein:

$this->bbcode_second_pass_code('', '$rows = db_cached_query('SELECT...');
foreach($rows as $row) {
echo $row['user'];
}')

PS: Ich weiss, es hat viel Konstanten und Funktionen drinn, die ich nicht erwähne - beachtet diese Funktionalitäten einfach nicht. Semaphoren funktionieren (noch) nicht wirklich, den RAMCache ist noch nicht ausgetestet, ob er wirklich funktioniert und beschleunigt.

PPS: Mein Gott, liebe ich PHP5. Was da so möglich wäre:
$this->bbcode_second_pass_code('', '$res = new CachedQuery('SELECT acctid, name FROM accounts');
foreach($res as $row) {
echo $row;
}
# Ausgabe:
# $acctid\t$name\n
# Oder sowas...')


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cachehandler
BeitragVerfasst: Di 19 Feb, 2008 15:46 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Mo 24 Apr, 2006 18:21
Beiträge: 408
Geschlecht: Männlich
LoGD: http://localhost
Danke, jetzt kann ich auch die Tiere cachen =)

PHP:
function getmount($horse=0) {
$sql = "SELECT * FROM mounts WHERE mountid='$horse' LIMIT 1;";
$result = db_cached_query($sql,"mount_".$horse,120);
foreach($result as $row);
//if (db_num_rows($result)>0){
return $row;
//}else{
//return array();
//}
}


€dit: Eigentlich kann man doch auch die MoTD-Abfrage 24 STunden cachen und die Datei dann löschen, wenn eine neue MoTD eingetragen wird, oder? Genau so eigentlich auch bei den Tieren...

_________________
Mal wieder da...


Zuletzt geändert von Montekar am Di 19 Feb, 2008 15:51, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cachehandler
BeitragVerfasst: Di 19 Feb, 2008 15:50 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
Da das ganze hier eh auf ein Ergebnis reduziert ist, braucht man eigentlich keine for-Schleifen. Und theoretisch könntest du die Nachladezeit auch höher stellen. Man verändert die Tiere ja eh nur recht selten. Den dritten Parameter auf einen Tag stellen, und dann nur jeweils beim Verändern über den Editor die Cache-Datei löschen. Sollte doch eigentlich genügen.

PHP:
function getmount($horse=0) {
$sql = "SELECT * FROM `mounts` WHERE `mountid` = '".$horse."' LIMIT 1;";
$result = db_cached_query($sql, "mount_".$horse, 120);

return $result[0];
}


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cachehandler
BeitragVerfasst: Di 19 Feb, 2008 15:59 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Mo 24 Apr, 2006 18:21
Beiträge: 408
Geschlecht: Männlich
LoGD: http://localhost
Harthas hat geschrieben:
Da das ganze hier eh auf ein Ergebnis reduziert ist, braucht man eigentlich keine for-Schleifen. Und theoretisch könntest du die Nachladezeit auch höher stellen. Man verändert die Tiere ja eh nur recht selten. Den dritten Parameter auf einen Tag stellen, und dann nur jeweils beim Verändern über den Editor die Cache-Datei löschen. Sollte doch eigentlich genügen.

PHP:
function getmount($horse=0) {
$sql = "SELECT * FROM `mounts` WHERE `mountid` = '".$horse."' LIMIT 1;";
$result = db_cached_query($sql, "mount_".$horse, 120);

return $result[0];
}


Die 2 Minuten hatte ich zur testweise (?) eingesetzt :D

Übrigens komme ich auf meinem kleinen Testserver auf 3 Querys:

$this->bbcode_second_pass_code('', '
SELECT COUNT(acctid) AS onlinecount FROM accounts WHERE locked=0 AND loggedin=1 AND laston>'2008-02-19 15:43:08'
SELECT name,alive,location,sex,level,laston,loggedin,lastip,uniqueid FROM accounts WHERE locked=0 AND loggedin=1 AND laston>'2008-02-19 15:43:08' ORDER BY level DESC
SELECT name,alive,location,sex,level,laston,loggedin,lastip,uniqueid FROM accounts WHERE locked=0 AND loggedin=1 AND laston>'2008-02-19 15:43:08' ORDER BY level DESC
')

Wobei einer doppelt ist :( Keine Ahnung woran das liegt...

Edit: Reduziert habe ich das ganze selber, obwohl das eigentlich sinnlos ist, die mounts-Tabelle sollte auch mit Primary Key+ Auto Increment arbeiten...

_________________
Mal wieder da...


Zuletzt geändert von Montekar am Di 19 Feb, 2008 16:03, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cachehandler
BeitragVerfasst: Di 19 Feb, 2008 16:02 
Offline
Freak
Freak

Registriert: So 29 Jan, 2006 09:41
Beiträge: 1927
Wohnort: Schweiz
Geschlecht: Männlich
Skype: louis.huppenbauer
Zu Testzwecken oder probehalber ^^

Wo testest du es? Auf der list.php?
Vielleicht wird da das Query auch wirklich schlicht und einfach zwei Mal aufgerufen. Such doch mal nach dessen Vorkommen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Cachehandler
BeitragVerfasst: Di 19 Feb, 2008 16:08 
Offline
Großmeister
Großmeister
Benutzeravatar

Registriert: Mo 24 Apr, 2006 18:21
Beiträge: 408
Geschlecht: Männlich
LoGD: http://localhost
Deutsch ist nicht einfach ^^

Ich teste auf der login-Seite, der Query wird von der Funktion charstats produziert...

Aah, ich habs:

$footer=str_replace("{stats}",charstats(),$footer);
$header=str_replace("{stats}",charstats(),$header);

Das ist mir schon bei der mailcheck-Funktion aufgefallen, ein unnötiger Query.

if (strpos($footer,"{stats}")>0) $footer=str_replace("{stats}",charstats(),$footer);
if (strpos($header,"{stats}")>0) $header=str_replace("{stats}",charstats(),$header);

wäre besser :)

_________________
Mal wieder da...


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 44 Beiträge ]  Gehe zu Seite Vorherige  1, 2, 3  Nächste

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 25 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen
Du darfst keine Antworten zu Themen in diesem Forum erstellen
Du darfst deine Beiträge in diesem Forum nicht ändern
Du darfst deine Beiträge in diesem Forum nicht löschen
Du darfst keine Dateianhänge in diesem Forum erstellen

Suche nach:
Gehe zu:  
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum