[Frage] SensorandSwitch: Geschwindigkeit testen / verbessern

HarryHase

Mitglied
Mitglied seit
16 Feb 2006
Beiträge
657
Punkte für Reaktionen
34
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:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.