[Frage] SensorandSwitch: Geschwindigkeit testen / verbessern

HarryHase

Mitglied
Mitglied seit
16 Feb 2006
Beiträge
656
Punkte für Reaktionen
33
Punkte
28
Ich habe mitbekommen dass ihr die Geschwindigkeit untersucht habt und wohl auch Verbesserungen gefunden habt, da ich viel unterwegs war konnte ich das nicht richtig mitverfolgen und bei mir analysieren. Das das Wochenende naht und das Wetter nicht gerade zur Gartenarbeit einlädt würde ich gerne mein sas tunen.

Kann jemand beschreiben wie vorzugehen ist? - Aktuelle Version ist installiert -
 
Klaro

Die Webgeschwindigkeit: Webbrowser und Smartfonstoppuhr

Die PHP Geschwindigkeit: Linuxkonsole & time & php oder php-cgi

php:
time php sas.php info=status
(Lesen des Caches den sasap.php (crond) angelegt hat)

time php sasap.php (schaltet und erzeugt den Cache)
(Der crond Aufruf macht das normalerweise, also nicht genau auf den Anfang einer jeden Minute ausführen, besser nach 30 sekunden einer angefangenen Minute starten)

Variationen sind:
Ausführen beider Varianten mit Unterschiedlichen Pseudoskripten,
um langsame, bremsenden Skripten auf die Spur zu kommen.
 
Im Prinzip sollte man sein sasap durch die Vorgehensweise so tunen, dass es zur Cacheerstellung brav unter einer Minute bleibt. sas liest mit der neuen Version sowieso nur noch den Cache und ist somit immer schnell. Die time-Methode, die koyaanisqatsi hier beschreibt, ist dazu ideal.

Ich vermute allerdings, dass er bei: time php sas.php info=status
eher das einzelne Pseudoscript meint anstelle von sas.php - also time php prseudoschalter.php info=status
sas.php läuft zum Testen auch ohne Parameter: time php sas.php

Bei mir braucht sasap etwa eine halbe Minute. Mit vielen Pseudoscripten kann der Wert höher sein. Es gilt zu verhindern, dass sozusagen sasap noch läuft und durch cron ein weiteres sasap gestartet wird, bevor das vorangegangene fertig ist. Passiert das, gibt das einen Kaskadeneffekt und irgendwann hat man einen Haufen noch nicht fertig abgearbeiteter sasap, die sich gegenseitig behindern. Den Aufruf von sasap zu verhindern, wenn noch ein sasap läuft ginge zwar, würde aber dann ein eventuelles zeitgesteuertes Schalten verhindern, weil die Zeit bereits um ist, wo geschaltet werden sollte. Naja, das nur am Rande. :)

Faustregel: sasap muss für einen Durchlauf weniger als eine Minute brauchen, dann passts.

SAS-WebGUI muss nicht getunt werden, das läuft mit Cache immer schnellstmöglich. ;)


Noch als Nachtrag:
Zeitintensiv sind gerne Pseudoscripte mit Multiabfragen über sashelper durch curl,
Aufrufe von langsamen Internetseiten zur Daten-/Sensorwertgewinnung,
Manche Betriebssystembefehle,
Geräte, die nicht erreichbar sind und dann einen Fehler liefern. (Wird zwar schon programmseitig etwas abgefangen, dass nicht ewig drauf gewartet wird, aber...)
Gleiches gilt für Webseiten, die down sind.
 
Zuletzt bearbeitet:
Hinzufügen möchte ich noch....
Das direkte Testen der Pseudoskripte auf der Kommandozeile alá....
time php prseudoschalter.php info=status
...geht vollkommen am Caching von sasap.php vorbei.
Es eignet sich aber hervorragend für eventuelle Fehlerausgaben,
die vom Webinterface komplett gefiltert/unterdrückt werden.
 
Zuletzt bearbeitet:
Hinzufügen möchte ich noch....
Das direkte Testen der Pseudoskripte auf der Kommandozeile alá....
time php prseudoschalter.php info=status
...geht vollkommen am Caching von sasap.php vorbei.
...
Eigentlich nicht. Hier kann man sehr genau feststellen, wie lange das einzelne Pseudoscript zur Abarbeitung benötigt, denn sasap ruft die Pseudos auch nur per curl auf. ;)

PHP:
function pseudoGeraete() 
$adr=$pseudoURL.'pseudo'.strtolower($DD).'.php?info=status';
$Status=web($adr,$post);

Beispiel: pseudoedimax.php

Code:
root@Himbeere:/var/www/sensorandswitch# time php pseudoedimax.php info=status
S#2#
real    0m0.639s
user    0m0.210s
sys     0m0.070s
root@Himbeere:/var/www/sensorandswitch#

Nachtrag: Allerdings wie ich gerade feststelle, funktioniert natürlich im Kommandozeilenbereich keine Parameterübergabe. Ein $_GET gibt es dort nicht.
 
Zuletzt bearbeitet:
@koyaanisqatsi: Kennst du für die Parameterübergabe einen Workaround?
 
Ich hab die Binary php gerade nicht zur Hand.
Ruf php mal so auf: php --help | more
Da steht bestimmt wie das geht. ;)

Auf Windows: php servars.php -- info=status
 
Zuletzt bearbeitet:
Leider nicht. Da kommt wohl nur was über die Argumentenliste, die aber nicht mit $_GET identisch ist. Das heißt, das müsste in jedem Script berücksichtigt und getestet werden, ob was über $_GET per Browseraufruf oder via ARGs per Kommandozeile was kommt. Etwas viel Aufwand. Naja, muss auch nicht sein. :)
 
OK, auf der Kommandozeile gehen POST und GET nicht.
Nur eine Prüfung auf argv und argc zusätzlich würde funktionieren.
 
Zuletzt bearbeitet:
Kostenlos!

Statistik des Forums

Themen
248,854
Beiträge
2,302,935
Mitglieder
378,504
Neuestes Mitglied
Hallo61Hallo