WBCE CMS Forum

WBCE CMS – Way Better Content Editing.

Du bist nicht angemeldet.

#1 20.11.2017 14:13:13

rjgamer
Developer

Seitenbaum und Admin-Javascript als Template-Variablen

Hallo,

Pullrequests sind in Absprache mit colinax entstanden.

Vom Prinzip die gleiche Optimierung wie hier, einfach für den Seitenbaum im Adminbereich.

Bitte noch ausgiebig testen. Sollte aber unter Flat und Argos mit den neue platzierten Variablen {PAGE_TREE} und {JS_ADMIN} in den Pullrequests ohne Probleme funktionieren.

Danke für die Freigabe und Gruss
rjgamer

Beitrag geändert von rjgamer (20.11.2017 14:14:11)

Offline

Liked by:

colinax

#2 20.11.2017 20:38:51

colinax
Developer

Re: Seitenbaum und Admin-Javascript als Template-Variablen

Hab das Ganze zum einfacheren testen mal in einen eigenen Branch gemerged.

Sieht aber soweit gut aus.

Offline

Liked by:

rjgamer

#3 20.11.2017 20:47:07

rjgamer
Developer

Re: Seitenbaum und Admin-Javascript als Template-Variablen

Okidoki. Danke!

Fraggy 2.0 wird die zwei Changes im Adminbereich voraussetzen. Ist schon bekannt wann der nächste Release von WBCE kommt?

Beitrag geändert von rjgamer (20.11.2017 20:47:27)

Offline

#4 21.11.2017 16:14:12

colinax
Developer

Re: Seitenbaum und Admin-Javascript als Template-Variablen

Hab die Änderungen in den master Branch gemerged  smile

Offline

#5 21.11.2017 17:48:59

rjgamer
Developer

Re: Seitenbaum und Admin-Javascript als Template-Variablen

thumb_up

Cool. Danke.

Offline

#6 24.01.2018 09:20:39

florian
Administrator

Re: Seitenbaum und Admin-Javascript als Template-Variablen

Es scheint so, als würde die Umstellung zu massiven Performanceeinbußen bis hin zu Timeouts führen, wenn es sich um sehr umfangreiche Auftritte mit mehreren hundert Seiten handelt. (https://forum.wbce.org/viewtopic.php?id=1851)
Issue: https://github.com/WBCE/WBCE_CMS/issues/327

Eine Lösung für dieses Problem wäre wichtig.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#7 24.01.2018 09:27:56

rjgamer
Developer

Re: Seitenbaum und Admin-Javascript als Template-Variablen

Mist. Gerade diese Woche bin ich mehrheitlich abwesend.

Ich schau mir die Sache in den nächsten Tagen mal an. Aber weis noch nicht wann.

Offline

Liked by:

florian

#8 24.01.2018 14:25:16

rjgamer
Developer

Re: Seitenbaum und Admin-Javascript als Template-Variablen

So, ich hatte paar Minuten Zeit und habe mich kurz mit der Problematik auseinandergesetzt.

Komisch ist natürlich, dass die template.inc plötzliche Probleme macht. In meinem damaligen Pullrequest habe ich nichts in der template.inc geändert. Doch der PageTree wird neu via Template Engine eingefügt und somit macht sich bei diesem riesen Haufen an HTML (wenn man viele Seiten hat), der "schlechte" Code der doch schon recht veralteten Template Engine (template.inc) bemerkbar. Das Problem hätte theoretisch wohl auch sonst irgendwo und irgendwann auftreten können.

Sobald ich mehr Zeit habe, werde ich versuchen die betroffene Stelle in der template.inc performanc-technisch zu tweaken. Wird aber wohl erst nächste Woche. Geht dies in Ordnung?

Offline

Liked by:

florian

#9 24.01.2018 14:29:34

florian
Administrator

Re: Seitenbaum und Admin-Javascript als Template-Variablen

Geht dies in Ordnung?

Sehr gern


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#10 24.01.2018 14:31:37

rjgamer
Developer

Re: Seitenbaum und Admin-Javascript als Template-Variablen

Hier ein erster Tweak-Versuch. Bitte die Zeile 536-538 in der template.inc mit diesem Code ersetzen:

foreach ($this->varvals as $k => $v) {
	 $varvals_quoted[$k] = preg_replace(array('/\\\\/', '/\$/'), array('\\\\\\\\', '\\\\$'), $v);
}

Sollte nun um einiges besser laufen. Bitte testen, am besten dort mit dem >500 Seiten.

Muss nun wieder Arbeiten und die nächsten zwei Tage an einen Workshop. Evt. kann ich am Donnerstagabend oder Freitagabend noch was bewirken. Wäre daher froh um euer Feedback.

Offline

#11 24.01.2018 14:34:12

florian
Administrator

Re: Seitenbaum und Admin-Javascript als Template-Variablen

Setzt der Tweak PHP7 voraus?


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#12 24.01.2018 14:35:44

rjgamer
Developer

Re: Seitenbaum und Admin-Javascript als Template-Variablen

Nope. PHP 5.x kompatibel.

Hier noch der Beweis warum gerade die Zeile 536 echt alter und performance-technisch schrecklicher Code ist: http://php.net/manual/de/function.each.php#75692

Weiter ist die each() Funktion deprecated gemäss php.net: This function has been DEPRECATED as of PHP 7.2.0. Relying on this function is highly discouraged.

Beitrag geändert von rjgamer (24.01.2018 14:36:59)

Offline

#13 24.01.2018 14:39:01

florian
Administrator

Re: Seitenbaum und Admin-Javascript als Template-Variablen

Ok, danke für die Infos. Ich schau mal, wo ich das testen kann.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#14 24.01.2018 15:52:04

florian
Administrator

Re: Seitenbaum und Admin-Javascript als Template-Variablen

bringt leider keine Verbesserung.
Test mit 750 Seiten, PHP 7.0.26, WBCE 1.3.1
Rechenzeit sowohl mit als auch ohne Änderung
- ca. 14 Sekunden mit Argos Reloaded,
- ca. 30 Sekunden mit Flat-Theme,
- ca. 40 Sekunden mit Fraggy,
Irritierenderweise läuft der Pagetree in einen Timeout (max_execution_time ist bei 45 Sek.), wenn bei JS Admin alle Optionen deaktiviert sind, d.h. die bremsen den gar nicht aus o_O


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#15 24.01.2018 16:10:30

rjgamer
Developer

Re: Seitenbaum und Admin-Javascript als Template-Variablen

Ist das Problem nur bei der Installation von willi?

Oder hast du eine eigene Installation mit 750 Seiten verwendet? Wenn ja, wie hast du auf die schnelle 750 Seiten erstellt/generiert?

Gruss

Offline

#16 24.01.2018 16:19:54

florian
Administrator

Re: Seitenbaum und Admin-Javascript als Template-Variablen

Ich habe eine Testinstallation mit einem quick&dirty abgewandelten Uraltmodul gebaut, hängt hier an, das auf einen Schlag 150 Seiten generiert (Seitentitel = microtime, übergeordnete Seite in Zeile 348 der tool.php anpassen).

Beitrag geändert von florian (24.01.2018 16:20:19)


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#17 24.01.2018 16:20:45

rjgamer
Developer

Re: Seitenbaum und Admin-Javascript als Template-Variablen

Kannst du mal Zeile 537 in der template.inc mit diesem Code ersetzen:

$varvals_quoted[$k] = str_replace(array('\\\\', '\$'), array('\\\\\\\\', '\\\\$'), $v);

Werde es dann auch noch mit dem Testmodul probieren.

Offline

#18 24.01.2018 16:23:56

florian
Administrator

Re: Seitenbaum und Admin-Javascript als Template-Variablen

Aber hallo!!11!

Damit ist der Baum ratzfatz aufgebaut. Wenn das jetzt keine sonstigen Einbußen hinsichtlich Sicherheit bedeutet, wäre das ja genial.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#19 24.01.2018 16:31:48

rjgamer
Developer

Re: Seitenbaum und Admin-Javascript als Template-Variablen

Das Problem lag somit beim preg_replace, weil bei sovielen Seiten auch viel HTML in den Variablen war und Regex schlichtweg zu lange brauchte. Bin mir einfach nicht sicher ob es einfach so reicht preg_replace mit str_replace zu ersetzen. Aber irgendwie macht Regex hier wirklich keinen Sinn.

Aber warum hier jetzt Doppel-Backslash und das $-Zeichen mit jeweils Doppel-Backslash "gequotet" werden, ergibt sich mir nicht. Bin offen wenn mich hier einer aufklärt ohne dass ich jetzt selber stundenlang den Code reverse-engineeren muss wink

Hab noch einen Fehler gefunden. Bitte die Zeile 537 mit diesem Code aktualisieren

[== PHP ==]
$varvals_quoted[$k] = str_replace(array('\\\\', '$'), array('\\\\\\\\', '\\\\$'), $v);

Offline

#20 24.01.2018 16:39:52

florian
Administrator

Re: Seitenbaum und Admin-Javascript als Template-Variablen

Hm, komisches Phänomen, leg mal eine Seite mit z.B. "$100 Reward!" als Titel an.... da wird dann "0 Reward!" draus.


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#21 24.01.2018 16:45:26

rjgamer
Developer

Re: Seitenbaum und Admin-Javascript als Template-Variablen

Jetzt muss es gehen:

$varvals_quoted[$k] = str_replace(array('\\\\', '$'), array('\\\\\\\\', '\$'), $v);

Ich hab jetzt leider keine Zeit mehr. Bitte gib mir nochmals kurz Rückmeldung. Es wäre evt. gut wenn man den Fix in der template.inc dann noch intensiv testet (im ganzen Backend und Frontend).

Beitrag geändert von rjgamer (24.01.2018 16:46:54)

Offline

Liked by:

florian

#22 24.01.2018 16:54:07

florian
Administrator

Re: Seitenbaum und Admin-Javascript als Template-Variablen

yep, sieht gut aus


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#23 24.01.2018 17:01:42

bernd
Developer

Re: Seitenbaum und Admin-Javascript als Template-Variablen

Ich guck mir das heute Nacht auch nochmal an, habe ja noch die lokale Version eines Projektes mit >500 Seiten da.


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

Liked by:

florian

#24 24.01.2018 17:07:58

florian
Administrator

Re: Seitenbaum und Admin-Javascript als Template-Variablen

Also, aktueller Stand, um das zusammenzufassen:
In der /include/phplib/template.inc die Zeilen

    while (list($k, $v) = each($this->varvals)) {
      $varvals_quoted[$k] = preg_replace(array('/\\\\/', '/\$/'), array('\\\\\\\\', '\\\\$'), $v);
    }

ersetzen durch

foreach ($this->varvals as $k => $v) {
	 $varvals_quoted[$k] = str_replace(array('\\\\', '$'), array('\\\\\\\\', '\$'), $v);
}

bringt bei mir einen Riesen-Performancegewinn (Seitenbaum mit 750 Seiten in 6 Sekunden da) und zeigt beim Herumklicken im FE und BE bislang keine Probleme, komische Titel mit $ und <script> und sowas verursachen auch keine Auffälligkeiten.
Dennoch auch von mir die Bitte, das mal zu testen.

Beitrag geändert von florian (24.01.2018 17:17:19)


Code allein macht nicht glücklich. Jetzt spenden!

Offline

#25 25.01.2018 00:52:13

bernd
Developer

Re: Seitenbaum und Admin-Javascript als Template-Variablen

Sodele,
(alles auf "localhost" mit WBCE1.3.1 und PHP7.0.27 - Durchschnittszeiten aus jeweils 10 Versuchen - Zeitmessung mittels microtime am Anfang und Ende der admin/pages/index.php)

A:)
bei der 540-Seiten Installation macht sich der Zeitunterschied zwar bemerkbar, ist aber bei der Seitenzahl noch nicht so wirklich gravierend: von ø7,9 sec auf ø 1,2 sec (Argos reloaded)

B:)
ich hab dann mal 'ne Testinstallation mit Florians Script auf 1050 Seiten (bis zum erreichen des Standard-Timeout) aufgeblasen (auch tief verschachtelt), da wirds dann doch ziemlich deutlich:
von ø 32,1 sec auf ø 10,7sec (Argos reloaded)
bzw. ø 22,4 sec auf ø 3,9 sec (Flat Theme)

Nebenwirkungen sind mir bis jetzt noch keine aufgefallen, ich kann die Änderung jedoch mit Einverständnis meiner Lieblingskundin auf 4 Seiten in freier Wildbahn testen.


... nein in Europa verwenden wir beim Programmieren nicht € statt $ ...

Offline

Fußzeile des Forums

up