brauche PHP Hilfe

Für allgemeine Software
Antworten
Benutzeravatar
Wetterfrosch
Offline
Beiträge: 403
Registriert: 08 Dez 2020, 11:49
Wohnort: 79410 Badenweiler (350mNN) / Breisgau-Hochschwarzwald
Hat sich bedankt: 104 mal
Danksagung erhalten: 32 mal
Kontaktdaten:

brauche PHP Hilfe

#1

Beitrag von Wetterfrosch »

Hallo,

ich steh mal wieder vor einem Problem:

Eine Wetterstation sendet alle 60 Sekunden ihre Daten auf einen Webspace, die Daten kann man dort per API abrufen.
Nun würde ich gerne über 10 Minuten die Windböen, d.h. 10 Messwerte in einer TXT-Datei abspeichern und immer nur die höchste Böe aus dieser Datei ausgeben.
D.h. in die Datei sollen immer die 10 letzten Böen eingetragen werden und dann aus diesen 10 Böen die höchste ausgegeben werden.

Dazu habe ich ein Code, den mir ein netter Forumskollege mal in der Vergangenheit geschrieben hatte und dieser Code, funktioniert auch einwandfrei bei meiner anderen Station, doch nun wollte ich ihn bei dieser zweiten Station auch anwenden doch nun wird die TXT-Datei einfach nicht beschrieben.
Was mache ich falsch? Ich habe ihn 1:1 kopiert und will ihn bei der neuen Station anwenden, doch hier funktioniert er nicht mehr, ich weiß echt nicht warum.

zur Erklärung:
Dem Code ist noch ein weiterer Code vorgeschaltet, der die API der Wetterstation auf einem anderen Server abruft.
Dieser Abruf funktioniert einwandfrei.
Die Codes werden zusammen per Cronjob alle 60 Sekunden Sekunden gestartet und die Variablennamen habe ich natürlich an die neue Station angepasst, d.h. die txt-Datei bekam natürlich einen neuen Namen und auch die stationseigene Variable über die sie die aktuelle Böe überträgt bzw. unter der die Böe in der API zu erreichen ist wurde angepasst.
Die aktuelle Böe wird ja auch in das Script geschrieben und auch ausgegeben, doch in der txt-Datei wird sie nicht abgelegt und hier weiß ich nun einfach nicht weiter, wieso das so ist.
Der Cronjob stößt das Script an, daran kann es schon mal nicht liegen.

Code: Alles auswählen

//höchste Böe in 10 Minuten

$ld = 'boe.txt';	
$a = explode( ';', file_get_contents($ld) );
$a[] = $windgust; //Böenvariable der Station
if ( count($a) > 10 ) //alle 10 böen innerhalb 10 Minuten speichern
    array_shift( $a );
file_put_contents( $ld, implode(';', $a) );
$boe = max($a); //höchste der 10 gespeicherten böen ausgeben
echo $boe;
Ausgegeben wird unter $boe nun immer die zuletzt von der Station gesendete Boe, d.h. der Wert der unter $windgust abgelegt ist und nicht wie gewünscht, die höchste Böe innerhalb 10 Minuten, d.h. innerhab 50 Messwerte. Und in die Datei boe.txt wird nix reingeschrieben obwohl sie im selben Verzeichnis wie das script abgelegt ist.

Kollege meinte, ich soll mal ein error log script oben einbauen, dies liefert folgendes Ergebnis:
- precip locked - uv locked - Transfer OKsuccess

Somit scheint mein Script zu funktionieren, doch wieso werden die Werte nicht in die TXT-datei geschrieben?
Was mache ich da nur falsch, denn wie gesagt, genau dieses Script läuft bei der anderen Station einwandfrei, doch wieso läuft es bei der neuen Station nun nicht?

Vielen Dank für die Hilfe.
LG Frank
Benutzeravatar
Wetterfrosch
Offline
Beiträge: 403
Registriert: 08 Dez 2020, 11:49
Wohnort: 79410 Badenweiler (350mNN) / Breisgau-Hochschwarzwald
Hat sich bedankt: 104 mal
Danksagung erhalten: 32 mal
Kontaktdaten:

Re: brauche PHP Hilfe

#2

Beitrag von Wetterfrosch »

Habe gerade den Fehler eingrenzen können:

Stoße ich das Script vom Browser an, funktioniert es, stoßt es der Cronjob an, dann funktionier nur ein Teil des Scriptes, der oben angehängte Teil funktioniert nicht.

Kann dies an der im Cronjob eingestellten PHP Version liegen?
WernerWetter
Offline
Beiträge: 79
Registriert: 07 Dez 2020, 18:19
Wohnort: Ulm / Grimmelfingen
Hat sich bedankt: 10 mal
Danksagung erhalten: 18 mal

Re: brauche PHP Hilfe

#3

Beitrag von WernerWetter »

Gibt es denn keine Fehlerausgabe?

Außerdem fällt mir auf:

Wo liegt denn deine Datei
$ld = 'boe.txt';

Es ist kein Pfad angegeben? Besser wäre "/home/Wetterfrosch/boe.txt" oder "~/boe.txt"?
Benutzeravatar
Wetterfrosch
Offline
Beiträge: 403
Registriert: 08 Dez 2020, 11:49
Wohnort: 79410 Badenweiler (350mNN) / Breisgau-Hochschwarzwald
Hat sich bedankt: 104 mal
Danksagung erhalten: 32 mal
Kontaktdaten:

Re: brauche PHP Hilfe

#4

Beitrag von Wetterfrosch »

Nein, fehlerausgabe war ohne Befund.
Und die txt-datei liegt im selben Ordner wie das Script, bisher hat das immer ohne Pfad dann geklappt, aber ich kann den Pfad ja mal anhängen.


update:
Absolutpfad angegeben und siehe da, es geht.
So eine Kleinigkeit mit so einer großen Wirkung, danke für den Tipp, wäre ich im Leben nicht darauf gekommen!

Aber nun die Frage:
Wieso hat das bisher bei den anderen Scriptes ohne Pfadangabe geklappt, sofern sie im selben Ordner lagen?
WernerWetter
Offline
Beiträge: 79
Registriert: 07 Dez 2020, 18:19
Wohnort: Ulm / Grimmelfingen
Hat sich bedankt: 10 mal
Danksagung erhalten: 18 mal

Re: brauche PHP Hilfe

#5

Beitrag von WernerWetter »

naja, Pfade in cron sind immer ein besonderes Thema.

Generell empfehle ich Fehlerausgaben von Programmen anzuschauen - alles andere ist Raten.

Fehlerausgaben von Skripten/Programmen in cron sind zB wie folgt möglich:

Code: Alles auswählen

0 8 * * * /pfad/zu/meinem/script > /var/log/script.log 2>&1  
Dann findest Du in /Var/log/script.log alle Ausgaben deines Programms. Und da wäre sicher etwas gestanden wie: file not found....

Gut das es funktioniert
VG Werner
Antworten