FroshPerformance-Plugin: Purify CSS mag nicht

@Shyim‍ Erst mal vielen Dank für die super genialen Friends of Shopware Plugins! Die machen gute Laune. :slight_smile:

Leider bin ich für den Purify-CSS-Teil des Performance-Plugins wohl zu doof. Wen ich das Command aufrufe, erhalte ich folgende Meldung auf der Server-Konsole:

In Process.php line 293:
                                   
  Unable to launch a new process.  
                                   

frosh:purify:css []

Ich gebe gerne zu: Meine Kenntnisse in Sachen Linux-Konsole, Packagemanagern usw. ist eher so „ich lerne gerade so viel, wie ich für ein Projekt brauche“. Also habe ich sicher hier irgendwas nicht korrekt gemacht.

Ausgangssituation:

  • Shopware 5.5.7
  • Timme Magaged vServer (anscheinend kein PurifyCSS installiert)
  • NodeJS war installiert, npm aber nicht(!?). Zumindest ergab npm -v nix.

Also über nvm nachinstalliert. Dann ließ sich purify-css installieren. Hat wohl auch so weit geklappt, dass ich zu der Ausgabe oben gekommen bin. (Davor kam der Fehler, dass purify-css installiert werden soll.)

Über Hinweise wäre ich dankbar.

Wenn es auf dem Hosting selbst nicht läuft, muss ich wahrscheinlich diesen Teil lokal zum Laufen bekommen oder welche anderen Optionen gibt es?

Funktioniert denn der Befehl node -v ?

Leider ja. (NodeJS war in Version 8.x installiert. Durch mein oben beschriebenes Vorgehen ist jetzt 10.15.3 verfügbar.)

Du könntest hier mal die arguments dumpen und das händisch ausführen

https://github.com/FriendsOfShopware/FroshPerformance/blob/master/Components/PurifyCss.php#L98

@Shyim‍ OK. Das probiere ich mal. Danke.

@Shyim schrieb:

Du könntest hier mal die arguments dumpen und das händisch ausführen

https://github.com/FriendsOfShopware/FroshPerformance/blob/master/Components/PurifyCss.php#L98

Hallo Shyim wie meinst du das genau mit händisch ausführen?

Ich stehe genau vor dem gleichen Problem: 

[root@s01 htdocs]# sudo php bin/console frosh:purify:css
array(11) {
  [0]=>
  string(9) "/bin/node"
  [1]=>
  string(14) "/bin/purifycss"
  [2]=>
  string(99) "/var/www/vhosts/xxxxxxxx.de/httpdocs/htdocs/web/cache/1557923673_b5a0abdaa85e99a3f2c6d975292fd707.css"
  [3]=>
  string(56) "/var/www/vhosts/xxxxxxxx.de/httpdocs/htdocs/themes/**/*.js"
  [4]=>
  string(57) "/var/www/vhosts/xxxxxxxx.de/httpdocs/htdocs/themes/**/*.tpl"
  [5]=>
  string(56) "/var/www/vhosts/xxxxxxxx.de/httpdocs/htdocs/custom/**/*.js"
  [6]=>
  string(57) "/var/www/vhosts/xxxxxxxx.de/httpdocs/htdocs/custom/**/*.tpl"
  [7]=>
  string(74) "/var/www/vhosts/xxxxxxxx.de/httpdocs/htdocs/engine/Shopware/Plugins/**/*.tpl"
  [8]=>
  string(73) "/var/www/vhosts/xxxxxxxx.de/httpdocs/htdocs/engine/Shopware/Plugins/**/*.js"
  [9]=>
  string(2) "-m"
  [10]=>
  string(2) "-o"
}

In Process.php line 293:

  Unable to launch a new process.


frosh:purify:css []

Kann es sein, dass mein Server die Methode proc_open nicht erlaubt welche benötigt wird um den Prozess zu starten?

Moin,

 

du bist doch schon als root in der Console unterwegs und gibst dem Script ein sudo mit ?

 

 

 

@NahtlosShop schrieb:

Moin,

 

du bist doch schon als root in der Console unterwegs und gibst dem Script ein sudo mit ?

Moin, genau das ist richtig. 

Ist falsch.

 

Man sollte nicht als root in der Console werkeln. Denn die Console ist mächtig, sehr mächtig.

Und als su, brauchst du dem Script kein sudo geben.

 

Hast du überhaupt einen user angelegt ?

Davon mal abgesehen, der Benutzer root wird ja nicht die Ursache für das Problem sein. Hast du einen lösungsorientierten Ansatz für das Problem?

@Chaos schrieb:

der Benutzer root wird ja nicht die Ursache für das Problem sein

getestet? 

@NextMike schrieb:

@Chaos schrieb:

der Benutzer root wird ja nicht die Ursache für das Problem sein

getestet? 

Ja 

Habt ihr mal in die php einstellungen der cli geschaut ob Prozesse ausgeführt werden dürfen?

Ansonsten wäre es cool, wenn möglich und erwünscht, dass ihr mir Zugangsdaten via PN zusendet und ich mir das mal anschaue. 

@Shyim schrieb:

Habt ihr mal in die php einstellungen der cli geschaut ob Prozesse ausgeführt werden dürfen?

Ich habe mir die Einstellungen angesehen und mit dem Webhoster Rücksprache gehalten, es ist per default nicht disabled und müsste somit funktionieren.

In Process.php line 293:

  Unable to launch a new process.

Mir ist aufgefallen, dass die Fehlermeldung aus einer Datei stammt die aus dem Viison DHL Adpater ist:

...\engine\Shopware\Plugins\Community\Backend\ViisonDHL\vendor\symfony\process\Process.php

Irgendwie kommen sich die beiden Plugins ins Gehege. Zum Test habe ich den DHL Adpater deaktiviert, dann funktioniert das PurifyCSS problemlos.

Die einsparungen sind bei mir jedoch sehr gering:

[OK] Purified css from 1.28M to 1.23M

Ich habe jetzt den Cache im Shop geleert und neu aufgewärmt, konnte aber bei Google Pagespeed keine signifikatnte Reduzierung der Ladezeit feststellen. Mir kommt es aber auch so vor, als wenn da noch etwas gehen müsste weil die ausgelieferte CSS Datei von 429KB vorher auf 433KB nachher gestiegen ist! Dabei nannte Google z.B. für die Startseite als Einsparpotential 333KB.

Symfony Process ist schon im Standard von Shopware drin. Das ein Plugin mitbringt nur Inkompatibilität rein.

Könntest du folge Zeile im Plugin https://github.com/FriendsOfShopware/FroshPerformance/blob/master/Components/PurifyCss.php#L98 zu dies ändern und prüfen ob es dann geht?

$process = new Process(implode(’ ', $arguments));

@Shyim schrieb:

Könntest du folge Zeile im Plugin https://github.com/FriendsOfShopware/FroshPerformance/blob/master/Components/PurifyCss.php#L98 zu dies ändern und prüfen ob es dann geht?

$process = new Process(implode(’ ', $arguments));

Damit läuft es 1a, auch wenn der DHL Adpater parallel installiert ist. Keine Konflikte mehr!

Kannst du mir noch einen Tipp geben, wie mehr Dateigröße eingespart werden kann? Ich hab das PurifyCSS so verstanden, dass nur noch der CSS Code zurück gegeben wird, der für die aktuell geladene Seite im HTML auch angefragt wird. Demnach müsste ich deutlich mehr einsparen können, als das Script mir ausgibt:

[OK] Purified css from 1.30M to 1.24M

Daneben wundere ich mich, dass scheinbar auch JS Dateien mit inkludiert werden. Wird hier das gleiche Prinzip angewendet wie bei den CSS Dateien? Das wäre sehr cool :slight_smile:

[push]