Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 14. April 2015 09:17

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Datei fileloc.php wird doppelt geladen ...

Zentraler Dreh- und Angelpunkt von CMSMS ist die index.php. Dort findet sich in der aktuellen Version in Zeile 23 folgender Eintrag

require_once($dirname.'/fileloc.php');

Abgesehen davon, dass

require_once(__DIR__.'/fileloc.php');

performanter wäre, besteht da wie im Topic beschrieben noch ein anderes Problem, was sich in Zeile 71 manifestiert

require_once($dirname.'/include.php');

Dort wird die ebenfalls im root-Verzeichnis befindliche Datei include.php eingebunden. Ok, schauen wir mal rein - auf Zeile 76 findet sich da folgender Eintrag

require_once($dirname.DIRECTORY_SEPARATOR.'fileloc.php');

Ähmm, hatten wir das nicht gerade? Was ist denn so wichtig daran, dass die Datei gleich 2x geladen werden muss?? Ok, schauen wir mal nach

define("CONFIG_FILE_LOCATION", dirname(__FILE__) . DIRECTORY_SEPARATOR . 'config.php');
define("TMP_CACHE_LOCATION", dirname(__FILE__) . DIRECTORY_SEPARATOR . 'tmp' . DIRECTORY_SEPARATOR . 'cache');
define("TMP_TEMPLATES_C_LOCATION", dirname(__FILE__) . DIRECTORY_SEPARATOR . 'tmp' . DIRECTORY_SEPARATOR . 'templates_c');

Könnt ihr etwas erkennen? Ich nicht!

Abgesehen davon macht ein 3-Zeile mit einer Konstanten-Definition in einer separaten Datei nach meinem Verständnis nur sehr eingeschränkt Sinn.

Vorschlag zur Korrektur:

index.php - Zeile 23

require_once($dirname.'/fileloc.php');

ersetzen durch

define("CONFIG_FILE_LOCATION", __DIR__ . DIRECTORY_SEPARATOR . 'config.php');
define("TMP_CACHE_LOCATION", __DIR__ . DIRECTORY_SEPARATOR . 'tmp' . DIRECTORY_SEPARATOR . 'cache');
define("TMP_TEMPLATES_C_LOCATION", __DIR__ . DIRECTORY_SEPARATOR . 'tmp' . DIRECTORY_SEPARATOR . 'templates_c');

include.php - Zeile 76

require_once($dirname.DIRECTORY_SEPARATOR.'fileloc.php');

ersetzen durch

# require_once($dirname.DIRECTORY_SEPARATOR.'fileloc.php');

Neben der Fehlerkorrektur haben wir damit gleich mal so ganz nebenbei 5 Funktionen (3x dirname(), 2x require_once()) eingespart, die allesamt eine bestimmte Ausführungszeit, einen gewissen Overhead haben und auch Speicher belegen ... sicherlich nicht die Masse an Performance, die man hiermit gewinnt, aber ein "performanter" Kuchen besteht nun mal aus unendlich vielen Krümeln big_smile.

Offline

#2 15. April 2015 07:39

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: Datei fileloc.php wird doppelt geladen ...

Im SVN (trunk) scheint man dieses Problems bereits vor einem halben Jahr behoben zu haben. Schätze das wird erst mit der 2.0 veröffentlicht.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#3 15. April 2015 07:54

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Re: Datei fileloc.php wird doppelt geladen ...

Hab ich auch schon gesehen - ist halt nur die Frage, warum es nicht schon in der 1.12 drin ist ...

Offline

#4 15. April 2015 15:27

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: Datei fileloc.php wird doppelt geladen ...

Die haben eine Agenda - schätze ich mal. Und die wird einfach stur abgearbeitet. Was kommt wann in welche Version? Ich kenne das aus meiner Firma. Die Agenda wird nach Dringlichkeit und nach Aufwand aufgebaut. Wie dringend/aufwendig etwas ist, wird im Team entschieden.
Ist der Plan einmal fertig, ist völlig egal, ob man dieses oder jenes noch hätte nebenbei beheben können. Wenn es für das nächste Release nicht auf dem Plan steht, wird es nicht gemacht bzw. kommt in einen extra Branch und wird erst im übernächsten Release veröffentlicht. Punkt. Ist zwar doof, aber dadurch behält man wenigstens die Übersicht und kann im Vorfeld genau sagen, was im nächsten Release drin ist und was nicht. So kann der Anwender auch planen. Ich bin mir nur nicht sicher, ob das "CMSms DEV Team" tatsächlich so arbeitet. Außerdem ist man dadurch nicht sehr flexibel, was insbesondere im Internet fatal sein könnte.

(OMG! Ich hatte tatsächlich das Wort mit T... geschrieben! ops )


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#5 15. April 2015 20:22

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Re: Datei fileloc.php wird doppelt geladen ...

NaN schrieb:

Die haben eine Agenda - schätze ich mal. Und die wird einfach stur abgearbeitet. Was kommt wann in welche Version?

Früher gabs das mal offiziell und trug den Namen Roadmap wink. Hab ich aber seit ner halben Ewigkeit nichts mehr dazu gesehen ...

Offline

#6 04. Mai 2015 06:59

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Re: Datei fileloc.php wird doppelt geladen ...

cyberman schrieb:

Zentraler Dreh- und Angelpunkt von CMSMS ist die index.php. Dort findet sich in der aktuellen Version in Zeile 23 folgender Eintrag

require_once($dirname.'/fileloc.php');

Abgesehen davon, dass

require_once(__DIR__.'/fileloc.php');

performanter wäre, besteht da wie im Topic beschrieben noch ein anderes Problem, was sich in Zeile 71 manifestiert

require_once($dirname.'/include.php');

Dort wird die ebenfalls im root-Verzeichnis befindliche Datei include.php eingebunden. Ok, schauen wir mal rein - auf Zeile 76 findet sich da folgender Eintrag

require_once($dirname.DIRECTORY_SEPARATOR.'fileloc.php');

Ähmm, hatten wir das nicht gerade? Was ist denn so wichtig daran, dass die Datei gleich 2x geladen werden muss??

/install/upgrade.php

Zeile 20

Zeile 86:

require_once cms_join_path(CMS_BASE, 'include.php');
http://php.net/manual/de/language.constants.php schrieb:

Wie der Name bereits nahelegt, kann der Wert einer Konstanten zur Laufzeit des Skripts nicht verändert werden

Langsam frage ich mich ernsthaft, wie bzw. womit man die angeblich hunderte Stunden Testzeit verbringt, wenn sich nicht einer die Mühe macht, mal den Code anzuschauen.

So einen Schietkram sehe sogar ich als Laie sad ...

Offline

#7 03. September 2018 16:14

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: Datei fileloc.php wird doppelt geladen ...

Hat das schonmal jemand erfolgreich probiert?

Ähmm, hatten wir das nicht gerade? Was ist denn so wichtig daran, dass die Datei gleich 2x geladen werden muss??

Denn mir ist gerade aufgefallen, dass durch diese Änderung das Backend nicht mehr funktioniert.
Das wird der Grund sein, warum das da zweimal drin steht.
Denn Front- und Backend teilen sich einige Dateien.
So z.B. auch die include.php.
D.h. wenn in der include.php die Konstante z.B. CONFIG_FILE_LOCATION nicht defniert wird (was mit require_once fileloc.php geschieht), können im Backend wichtige Teile nicht geladen werden. Im Backend wird ja nur die include.php eingebunden, aber nicht die index.php im root.
Und wenn man die Konstanten ausschließlich in der include.php definiert, dann hat man in der index.php im root das Problem, dass man einige Konstanten bereits vor der include.php braucht.
Selbes Problem beim Upgrade.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline