anpera.net

anpera.net

experimental server @home
Aktuelle Zeit: Mo 18 Nov, 2019 07:47

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Splitting, bzw. Auslagern
BeitragVerfasst: So 27 Feb, 2005 20:02 
Offline
Meister
Meister

Registriert: Sa 25 Sep, 2004 11:49
Beiträge: 337
Wohnort: Irgendwo im Sauerland
LoGD: http://www.rulina.de/logd/source.php
Alllssoooo

Ich habe nun schon einige LoGD's gesehen die ihre functions Auslagern, und habe nun bei den Bedingung um Hilfe zu bekommen gelesen das es die Ladezeit erhöhen würde.
Da dies von Chaosmaker geschrieben wurde glaube ich das auch so zimlich anstandslos, nur würd ich gerne wissen warum dem so ist...

Dann noch das Splitting, so habe ich es genannt wenn man seine common.php in 2 Dateien aufteil. Hatt dies Irgendeinen Nutzen?

Und dann noch ein Frage, in einiger älterer Beiträge und der common.php ist die Rede von einem "Beta"-Status, den man durch einen Pavilion erreichen konnte... Nur rein aus Intresse, was ist/war das?

So, eher unwichtige Fragen, aber ich wollte sie doch mal stellen ;)

_________________
*Mekkelon - Mitglied im Renais-Völkerbund*
Thread


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 27 Feb, 2005 20:35 
Offline
Großmeister
Großmeister

Registriert: Mi 15 Dez, 2004 00:41
Beiträge: 467
Wohnort: München
Der Beta-Status wird, wenn ich nicht irre, gar nicht mehr genutzt.
An sich ist er dafür gedacht, daß bestimmte User für neue Features als Betatester eingetragen werden können.

Zum Auslagern der Funktionen: Es würde genau dann Sinn machen, wenn man nur bei Bedarf die benötigte Funktion includet. D.h., daß Funktionen wie output() in der common.php bleiben und nur spezielle (wie z.B. forest() oder wie die heißt) ausgelagert werden, da die nicht überall nötig sind.
Werden aber alle includet, werden die Funktionen natürlich nach wie vor alle "geladen" und zusätzlich (geringe) Rechenleistung für das includen benötigt.
Wenn jemand tatsächlich einige Funktionen auslagert (was ich auch schon überlegt habe), spricht eigentlich nix dagegen, den Ordner dafür auch freizugeben.

Warum man die common.php aufsplitten sollte, weiß ich nicht - da müßte man natürlich wissen, was in beiden Versionen drinsteht.

_________________
A bus station is where busses stop. A train station is where trains stop. On my desk there is a workstation...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 27 Feb, 2005 20:40 
Offline
Profi
Profi
Benutzeravatar

Registriert: Sa 08 Jan, 2005 23:11
Beiträge: 161
Wohnort: Vechta
Geschlecht: Männlich
LoGD: Projekt nicht abgeschlossen..
Skype: Elebresk
Hi!

Also ich hab eine 2 common datei, ganz einfach weil sie

1. viel zu gross wurde und 2. steht in der 2 die function für die gamepostion und infostats und die städte (cities).

Rein prinzipiell NUR weil sie wirklich zu gross wurde, man muss sich auch noch ein bischen noch den Überblick halten können und ich komme so besser klar.

_________________
// If today was a perfect Day, there will be no need for tommorow... //


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 27 Feb, 2005 21:02 
:) Genau bei dir habe ich mir die gesplittete datei angeschaut ^^
Habe das aber auch schon irgendwo hier im Forum gelesen gehabt....

Nya so wie du das hast wird das denke ich aber auch kein Rechengewinn bringen (denn du rein prinzipiell auch net willst).

Mmmm also würde es etwas bringen wenn man nur z.b. Die forest und die chat function auslagern würde... Wie viel? Ich habe davon nicht so wirklich eine Vorstellung was das bringen soll, denn so viel Text ist ja nicht...


Nach oben
  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So 27 Feb, 2005 23:41 
Offline
Großmeister
Großmeister

Registriert: Mi 15 Dez, 2004 00:41
Beiträge: 467
Wohnort: München
Es geht nicht um die Menge an Text, sondern um den generellen "Aufwand", eine Funktion zu initialisieren, was in jedem Fall passiert, wenn sie vorhanden ist.
Bei der Chatfunktion würde sich das wohl nicht ganz so stark auswirken, weil sie fast überall genutzt wird - aber klar, ist im Prinzip richtig, alles was nicht immer gebraucht wird kann raus.

Zum Geschwindigkeitsunterschied:
Ich hab gerade in einem Script zunächst eine Datei includet, die 100mal jeweils die addcommentary und die viewcommentary enthielt (nur jeweils mit anderem namen, damit es keinen Fehler gibt, also addcommentary1() bis addcommentary100() und entsprechend mit viewcommentary).
Anschließend hab ich noch eine weitere Datei includet, die nur "$var = 'test';" enthält, um die Dauer vom include() an sich rauszufiltern.
Gegenüber standen sich also:
a) 200 Funktionsdefinitionen (wohlgemerkt wurden die Funktionen NICHT aufgerufen, sondern nur definiert!) entsprechend 100 LoGD-Scriptaufrufen, die unnötig die beiden Kommentarfunktionen enthalten
b) 1 Variablendefinition

Zeiten:
a) 0.38186s
b) 0.00037s

Die reinen Funktionsdefinitionen haben somit ca. 1032mal solange zum Laden gebraucht wie die Variablendefinition.
Anders ausgedrückt: Wenn 30 User zugleich online sind und jeder 10 Waldkämpfe macht, wird dabei eine Sekunde Rechenzeit verschenkt.
Ich habe grad mal nachgezählt und sage und schreibe 83(!) Funktionen in der common.php.
Würde ich davon 50 auslagern, würde das bei 30 Usern (sofern alle Funktionen die gleiche Zeit zur Initialisierung bräuchten) bei besagten 10 Waldkämpfen 25 Sekunden ergeben. D.h. wenn nur ein einziger User 10 Waldkämpfe macht, könnte er dabei fast eine Sekunde sparen.
Bei mir lokal braucht übrigens so eine Seite bei meiner aktuellen Systemlast etwa 0,15 Sekunden reine PHP-Zeit zum Laden, macht bei 10 Seitenaufrufen nach Adam Riese 1,5 Sekunden. Ich würde also 66% sparen.
Man könnte sogar so weit gehen und sagen, daß die Ladezeit ja bei oben erwähnten 30 Usern höher ist und somit die Ersparnis noch größer sein müßte. ;)

_________________
A bus station is where busses stop. A train station is where trains stop. On my desk there is a workstation...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 28 Feb, 2005 07:09 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 04 Dez, 2004 02:34
Beiträge: 825
Ähm köennen wir nicht auch den Ordner fuctions freigeben?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 28 Feb, 2005 08:12 
Offline
Eingeweihter
Eingeweihter
Benutzeravatar

Registriert: Di 06 Apr, 2004 08:03
Beiträge: 73
Devilzimti hat geschrieben:
Ähm köennen wir nicht auch den Ordner fuctions freigeben?


1. warum ist das nicht bereits geschehen?
denn du hinderst alle hier daran, wirklcih support zu geben, weil gerade in den funktionen hin und wieder seiteneffekte auftreten, die man sonst gar nicht sehen kann

2. was hat das damit zu tun?
chaosmaker sagte nicht, dass das (nicht)freigeben rechenzeit schluckt, sonder dass es das grundsaetzliche auslagern ist!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 28 Feb, 2005 09:38 
Offline
Großmeister
Großmeister

Registriert: Mi 15 Dez, 2004 00:41
Beiträge: 467
Wohnort: München
Ich persönlich bin natürlich zufrieden, wenn der Ordner freigegeben ist.
Hier ging es lediglich noch darum, darzustellen, warum es für den Server, auf dem das so ist, Nachteile bringt.

_________________
A bus station is where busses stop. A train station is where trains stop. On my desk there is a workstation...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 28 Feb, 2005 13:45 
Offline
Held
Held
Benutzeravatar

Registriert: So 20 Jun, 2004 09:53
Beiträge: 221
ob das mit der rechenzeit auch so bei inet server ist, wage ich zu bezweifeln, da dort noch andere faktoren gelten, das ist aber nur meine meinung

oder sehe ich da was falsch?

_________________
Die Frage muss nicht lauten, warum Leute Amok laufen, sondern warum es nicht mehr tun.
25 hours forum isnt enough.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 28 Feb, 2005 14:07 
Offline
Großmeister
Großmeister

Registriert: Mi 15 Dez, 2004 00:41
Beiträge: 467
Wohnort: München
Richtig ist, daß bei einem leistungsfähigen Internetserver der Faktor vermutlich nicht ganz so hoch ist, wie bei einem Heimrechner.
In jedem Fall wird aber durch die vielen Funktionsdefinitionen Rechenzeit verbraucht, die im Verhältnis zur übrigen reinen PHP-Zeit relativ hoch ist.
Der größte Unterschied bei den meisten Internetservern dürfte sein, daß der Flaschenhals MySQL ist und so eine Beschleunigung der PHP-Ladezeit von z.B. 0,05 auf 0,02 Sekunden bei 0,8 Sekunden MySQL-Zeit nicht bemerkbar ist.
Dennoch vertrete ich da den Standpunkt, daß Sparsamkeit (was Last betrifft - nicht bei der Serverleistung! :P ) nie schaden kann, auch wenn es nur sehr wenig ausmacht.
Solle allerdings jemand einen stark ausgelasteten Server haben, wo auch die PHP-Zeit recht hoch ist, ist der Unterschied durchaus stark bemerkbar.

_________________
A bus station is where busses stop. A train station is where trains stop. On my desk there is a workstation...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo 28 Feb, 2005 15:00 
Offline
Admin
Admin
Benutzeravatar

Registriert: Di 21 Jan, 2003 01:11
Beiträge: 1595
Wohnort: Haßfurt
Geschlecht: Männlich
LoGD: http://www.anpera.net/logd
Skype: anpera-net
Zitat:
Ähm köennen wir nicht auch den Ordner fuctions freigeben?


Ordner "functions" in der source.php freigeben:[php]//// Finde in source.php:
$legal_dirs = array(
$subdir."" => 1,
$subdir."special/" => 1
);

//// Ersetze es durch:
$legal_dirs = array(
$subdir."" => 1,
$subdir."special/" => 1,
$subdir."functions/" => 1
);[/php]

Zum Thema Geschwindigkeit durch Auslagern von Funktionen:

Es ist richtig, dass das Auslagern von Funktionen, die nicht bei jedem Klick benötigt werden, Rechenzeit spart. Allerdings könnte die so gewonnene Zeit wieder verloren gehen, sobald diese Funktionen benötigt werden. Wenn sich die Datei mit der Funktion nicht bereits in irgendeinem Cache befindet, müssen statt einer jetzt zwei Dateien geöffnet werden. Dabei schlägt die Zugriffsgeschwindigkeit von Festplatten doppelt zu, die ja wesentlich geringer ist, als die reine Lesegeschwindigkeit und mit der Geschwindigkeit von Prozessor und Arbeitsspeicher kaum zu vergleichen ist.

Wie stark sich dieser Faktor auswirkt, hängt wieder von der verwendeten Hardware, vom Betriebssystem (bei NTFS kann z.B. der Inhalt von kleinen Dateien komplett im Inhaltsverzeichnis gespeichert werden), von Cache- und Dateigrößen und von der Auslastung (gleichzeitige Anzahl an Zugriffen) ab.

Hehe, ich glaub, das muss jeder für sich und sein System selbst austesten, was mehr bringt und bei welcher Funktion es sich wirklich lohnt, sie auszulagern.

_________________
Praxis ist, wenn alles klappt aber keiner weiß warum. Theorie ist, wenn man weiß wie es geht, aber nichts klappt. Wir haben beides erfolgreich vereinigt: Bei uns klappt nichts und keiner weiß warum!

Neues Video: Marios freier Tag in Second Life


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Splitting, bzw. Auslagern
BeitragVerfasst: Fr 16 Sep, 2011 17:36 
Offline
Lehrling
Lehrling

Registriert: Mi 17 Aug, 2011 20:42
Beiträge: 37
Geschlecht: Männlich
LoGD: http://noch.nicht.online.de
hätt da noch ne frage...
hab testweise "function charstats(...." aus der common entfernt und auf ner neuen datei(function.php genannt) eingefügt.
funktioniert bei mir nicht >weiße seite mit fehlermeldung das sql passwort fehlt/nicht vorh. ist (dbwrapper)

habe es in der common mit "include "funktion.php";" und auch mit "require_once("function.php");" ausprobiert und umgekehrt in der function.php auch mit include/require_onces

wie verbinde ich denn mögliche 2te, 3te datei mit functionen drin???

gruss und dank vorab

EDIT: nutze 097 von anpera

_________________
ERROR!!!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Splitting, bzw. Auslagern
BeitragVerfasst: Fr 16 Sep, 2011 19:15 
Offline
Profi
Profi

Registriert: Sa 15 Jan, 2011 23:15
Beiträge: 100
du hast laut Fehlermeldung entweder die dbconnect.php garnicht oder falsch eingebunden oder falsche Daten eingetragen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Splitting, bzw. Auslagern
BeitragVerfasst: Fr 16 Sep, 2011 19:31 
Offline
Lehrling
Lehrling

Registriert: Mi 17 Aug, 2011 20:42
Beiträge: 37
Geschlecht: Männlich
LoGD: http://noch.nicht.online.de
Jack hat geschrieben:
du hast laut Fehlermeldung entweder die dbconnect.php garnicht oder falsch eingebunden oder falsche Daten eingetragen


doch doch... ohne das teilen der common.php läuft das spiel ja...
geht nur nicht, wie gesagt, wenn ich zB function charstats(....);{......} auf 2te datei auslagern will..

Saaxa hat geschrieben:
habe es in der common mit "include "funktion.php";" und auch mit "require_once("function.php");" ausprobiert und umgekehrt in der function.php auch mit include/require_onces

wie verbinde ich denn mögliche 2te, 3te datei mit functionen drin???

_________________
ERROR!!!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Splitting, bzw. Auslagern
BeitragVerfasst: Fr 16 Sep, 2011 22:50 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 16 Jul, 2005 22:40
Beiträge: 693
Wohnort: /var/server/home/castle
Geschlecht: Männlich
LoGD: http://www.kokoto.de/
Skype: Apfelschokowodkakekskuchen
Hallo,

keine ahnung wie du es machst, aber ich habe meine charstats auch ausgelagert und das funktioniert anstandslos.

Du musst allerdings die include ganz oben an den anfang der common.php setzen, wie das mit dem Fehler zusammenhängt kann ich jetz so aus dem Stehgreif überhaupt nicht nachvollziehen.

grüße


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Splitting, bzw. Auslagern
BeitragVerfasst: Sa 17 Sep, 2011 13:32 
Offline
Profi
Profi

Registriert: Sa 15 Jan, 2011 23:15
Beiträge: 100
@Tidus also da muss ich dir jetzt widersprechen.. Bzw etwas widerlegen

MÜSSEN tut er es nicht. Ich habe das "include('lib/charstat.lib.php');" (in der die charstat funktion drin ist) genau an der stelle an der die funktion charstat{} vorher angefangen hat. Denn ganz oben hatte bei mir nie geklappt


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Splitting, bzw. Auslagern
BeitragVerfasst: Sa 17 Sep, 2011 22:38 
Offline
Lehrling
Lehrling

Registriert: Mi 17 Aug, 2011 20:42
Beiträge: 37
Geschlecht: Männlich
LoGD: http://noch.nicht.online.de
aha, da kommen wirder sache schon näher...

also da wo ich eine function aus der common ausbau einfach ein include hin von der datei wo die function nun drauf ist?

test ich mal

_________________
ERROR!!!


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Splitting, bzw. Auslagern
BeitragVerfasst: So 18 Sep, 2011 10:08 
Offline
Marquis Pherae
Marquis Pherae

Registriert: Mi 09 Feb, 2005 16:01
Beiträge: 3922
Wohnort: Basel
Geschlecht: Männlich
Du musst darauf achten, was du auslagerst. Ohne Probleme auslagern und in den Kopf der common.php einbinden kannst du alle Funktionen - du musst aber penibel darauf achten, dass wirklich *nur* Funktionen und kein Programmablauf kopiert wird. Das ist bei dir nämlich passiert: Du hast (aller Wahrscheinlichkeit nach) Code ausserhalb von Funktionen kopiert, der mit der Datenbank kommunizieren möchte - und das, bevor die common.php sich mit der Datenbank verbunden hat. Schematisch sieht das ungefähr so aus: $this->bbcode_second_pass_code('', ' Binde [function.php] ein
Definiere Funktion soundso()
Definiere Funktion spam()
Mache das und das in der Datenbank
Ende [function.php]
[...]
Binde [dbwrapper.php] ein
Verbinde mit Datenbank')

Es wäre *extrem praktisch*, wenn du beide Dateien zur Verfügung stellen könntest - sonst kann man dir nur mit allgemeinen Tipps helfen.

Was für einen Editor verwendest du? Wenn es einer ist, der Codeteile "einklappen" kann - das wäre praktisch, um nur einzelne Funktionen cut&pasten zu können.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Splitting, bzw. Auslagern
BeitragVerfasst: Mo 03 Okt, 2011 23:21 
Offline
Freak
Freak
Benutzeravatar

Registriert: Sa 16 Jul, 2005 22:40
Beiträge: 693
Wohnort: /var/server/home/castle
Geschlecht: Männlich
LoGD: http://www.kokoto.de/
Skype: Apfelschokowodkakekskuchen
Jack hat geschrieben:
@Tidus also da muss ich dir jetzt widersprechen.. Bzw etwas widerlegen

MÜSSEN tut er es nicht. Ich habe das "include('lib/charstat.lib.php');" (in der die charstat funktion drin ist) genau an der stelle an der die funktion charstat{} vorher angefangen hat. Denn ganz oben hatte bei mir nie geklappt



Nagut _muss_ er nicht, aber bei mir funktioniert es, ich habe alle funktionen die ich ausgelagert habe, am anfang in die common eingebunden, weil es für mich so auch ordentlicher ist als überall irgendwo nen include be zeile 1234 etc. reinzumachen.

wenn es bei dir nicht funktioniert weis ich allerdings auch nicht wieso ...

PS: Ich habe meine Common.php nur aus einem grund teilweise ausgelagert, da mein Internet upload schwindend gering ist, war die Hochlade Zeit für die Common.php einfach nicht tragbar oder etragbar XD


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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:  
cron
POWERED_BY
Deutsche Übersetzung durch phpBB.de
anpera.net - Impressum