Cronjob bricht nach einiger Zeit ab - liegt wohl an einem Fehler im PHP-Script - brauche Hilfe

Für allgemeine Software
WernerWetter
Offline
Beiträge: 79
Registriert: 07 Dez 2020, 18:19
Wohnort: Ulm / Grimmelfingen
Hat sich bedankt: 10 mal
Danksagung erhalten: 18 mal

Re: Cronjob bricht nach einiger Zeit ab - liegt wohl an einem Fehler im PHP-Script - brauche Hilfe

#41

Beitrag von WernerWetter »

Du hast eine PN wegen der API....
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: Cronjob bricht nach einiger Zeit ab - liegt wohl an einem Fehler im PHP-Script - brauche Hilfe

#42

Beitrag von Wetterfrosch »

Wenn du mich meinst, es kam keine PN an.
WernerWetter
Offline
Beiträge: 79
Registriert: 07 Dez 2020, 18:19
Wohnort: Ulm / Grimmelfingen
Hat sich bedankt: 10 mal
Danksagung erhalten: 18 mal

Re: Cronjob bricht nach einiger Zeit ab - liegt wohl an einem Fehler im PHP-Script - brauche Hilfe

#43

Beitrag von WernerWetter »

.. ja, keine Ahnung was mit der PN passiert ist - die ging nicht raus :?:

Egal, ich habe es hinbekommen. Ein Niederländer hat eine Beschreibung für WU gepostet.
(So ein Mist, alles in mph und inHg umrechnen)

So hier meine Station:
Wetterwerte der Station Ulm/Grimmelfingen

Ich zeichne jetzt die Returnvalues incl. Antwortzeiten auf. Ich melde mich
WernerWetter
Offline
Beiträge: 79
Registriert: 07 Dez 2020, 18:19
Wohnort: Ulm / Grimmelfingen
Hat sich bedankt: 10 mal
Danksagung erhalten: 18 mal

Re: Cronjob bricht nach einiger Zeit ab - liegt wohl an einem Fehler im PHP-Script - brauche Hilfe

#44

Beitrag von WernerWetter »

erste Erkenntnisse mit curl_exec:

* Wenn man die updates zu schnell hintereinander ausführt , kommt die Fehlermeldung " too many requests - try again later"
* In meiner php Version (phpinfo() PHP Version => 7.3.31-1~deb10u1) kommt kein "success" oder "ok" zurück. Siehe #19
* Erste Aussetzer um 21:01:02 und 21:02:02 -> Keine Response = "False" hier hat es nicht geklappt.

Code: Alles auswählen

----------------------------------------
18.08.2022 - 21:00:01>>  - uv locked  - Transfer OK1
Zeit URL 0.644659

----------------------------------------
18.08.2022 - 21:01:02>> ----------------------------------------
18.08.2022 - 21:02:02>> ----------------------------------------
18.08.2022 - 21:03:01>>  - uv locked  - Transfer OK1
Zeit URL 0.066075
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: Cronjob bricht nach einiger Zeit ab - liegt wohl an einem Fehler im PHP-Script - brauche Hilfe

#45

Beitrag von Wetterfrosch »

Genau, der Feler " too many requests - try again later" kommt bei mir auch und ich denke dass das das Problem ist, weswegen der CJ irgendwann seinen Dienst quitiert, doch ich sende im 1 Minuten-Intervall, welches bei Awekas das kürzest mögliche ist, doch dann dürfte doch dieser Fehler nicht auftreten oder könnte es sein, dass der CJ ab und an auch mal nach 58 Sekunden gestartet wird und dadurch dann die Fehlermeldung kommt?

Wie könnte man das Problem umgehen?
ja, ich könnte einfach im 2 Minuten Intervall senden, das wäre auch eine Möglichkeit, doch es gibt gewisse Gründe für mein 1-Minuten-Intervall.
Aktuell läuft mein CJ bisher ohne Probleme, seit ich eben die Die() Funktion mit eingebaut habe, aber vielleicht gibt es ja auch noch eine andere Lösung, mal sehen was du noch herausfindest.

Bezgl. noch wegen der Umrechnung der Messwerte wegen der verschiedenen Einheiten, dafür gab es hier im Forum schon ein komplett fertiges Script incl. dem Sendescript zu WU und Awekas, gugst du hier:
viewtopic.php?t=110
und hier, dieses Script habe ich verwendet:
https://heiligensee-wetter.de/code_1.php
WernerWetter
Offline
Beiträge: 79
Registriert: 07 Dez 2020, 18:19
Wohnort: Ulm / Grimmelfingen
Hat sich bedankt: 10 mal
Danksagung erhalten: 18 mal

Re: Cronjob bricht nach einiger Zeit ab - liegt wohl an einem Fehler im PHP-Script - brauche Hilfe

#46

Beitrag von WernerWetter »

So, gestern noch festgestellt:

Wenn der Zugriff auf AWEKAS länger als eine Minute dauert, startet der CJ bereits eine 2te Abfrage. Dies ergibt die Fehlermeldung "too many requests".
Ich hab jetzt den Timeout von curl_exec auf 45 sekunden gesetzt:

Code: Alles auswählen

----------------------------------------
19.08.2022 - 05:10:01>> Curl-Fehler: Operation timed out after 45001 milliseconds with 0 bytes received
Zeit URL 45.001386

----------------------------------------
19.08.2022 - 05:11:01>> too many requests - try again later 1
Zeit URL 0.054943

----------------------------------------
19.08.2022 - 05:12:01>>  - uv locked  - Transfer OK1
Zeit URL 0.071726

----------------------------------------
19.08.2022 - 05:13:01>> Curl-Fehler: Operation timed out after 45000 milliseconds with 0 bytes received
Zeit URL 45.000469

Man sieht es kommt doch ab und an vor, dass die curl länger unterwegs ist.... Ich beobachte weiter ...

VG
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: Cronjob bricht nach einiger Zeit ab - liegt wohl an einem Fehler im PHP-Script - brauche Hilfe

#47

Beitrag von Wetterfrosch »

Kannst du mal dein komplettes cURL-Sendescript hier einstellen, wie du das nun propgrammiert hast?
ich habe ja bei Awekas aktuell auf fopen() umgestellt und sende aktuell nun so:

Code: Alles auswählen

    $urlAWb = fopen("http://ws.awekas.at/weatherstation/updateweatherstation.php?ID=$ID&PASSWORD=$PASSWORD&action=$action&dateutc=$dateutc&tempf=$tempfb&dewptf=$dewptfb&humidity=$humidityb&winddir=$winddirb&windspeedmph=$windspeedmphb&windgustmph=$boeb&baromin=$barominb", "r") or die('Server-Error');
    fclose($urlAWb);
    
kann man an diesen Code, auch irgendwie eine Bedingung einbauen, dass der Sendeversuch nach 45 Sekunden abgebrochen wird? Vielleicht anstatt mit Die() das ganze Script zu beenden?
Denn aktuell bricht das Die() am Ende ja mein komplettes Script ab und da das Script nicht nur für das Senden an Awekas zuständig ist, bricht halt aktuell, wenn Awekas nicht erreichbar ist, auch das restliche Script ab, was ja eigentlich etwas doof ist, denn das restliche Script hat mit Awekas nix zu tun und könnte ja trotzdem weiter abgearbeitet werden oder wird das Script erst ab der Stelle wo das Die() eingebaut ist abgebrochen und alles was davor steht wird noch abgearbeitet?

Mit fopen() bekomme ich übrigens diese Fehlermeldung:
"failed to open stream: HTTP request failed!" und dann wird mit Die() abgebrochen.
Diese Fehlermeldung ist augenscheinlich die, dass der Server von Awekas nicht erreicht wurde, richtig?

Zumindest aber bricht der CJ seit die Die() Funktion eingebaut ist, bisher nicht mehr ab, das ist auf jeden Fall mal ein Fortschritt.

Oder ist es ratsamer, das ganze von fopen() wieder auf cURL umzustellen?
Ich kann ja mal deine Lösung einbauen und schauen was bei mir dann geschieht.
WernerWetter
Offline
Beiträge: 79
Registriert: 07 Dez 2020, 18:19
Wohnort: Ulm / Grimmelfingen
Hat sich bedankt: 10 mal
Danksagung erhalten: 18 mal

Re: Cronjob bricht nach einiger Zeit ab - liegt wohl an einem Fehler im PHP-Script - brauche Hilfe

#48

Beitrag von WernerWetter »

So, ich habe mein Skript jetzt tagsüber laufen lassen:

Update jede Minute

Insgesamt wurden 567 Updates bei AWEKAS angestoßen
Davon haben 8 Aktualisierungen nicht funktioniert:
7* timeout nach 50 Sekunden.
1 * AWEKAS Error!!! Can't connect to Database. Please try again later...

Also 98,5%(?) Zuverlässigkeit. Hier die Statistik-Auswertung aus Libreoffice bzgl. Update-Zeiten. Wen es interessiert.

Code: Alles auswählen

			Sekunden
Mittelwert		0,326366568872988
Standardfehler	0,07939455877986
Modus			0,065008
Median			0,069496
Erstes Quartil		0,066149
Drittes Quartil		0,0756355
Varianz			3,52365424379136
Standardabweichung	1,87713991055312
Wölbung			229,614641925198
Schräge			13,9681242167974
Bereich			34,978372
Minimum		0,060592
Maximum		35,038964
Summe			182,438912
Anzahl			559
AWEKASDiagramm.png
AWEKASDiagramm.png (32.09 KiB) 760 mal betrachtet
Y-Achse: Zeit in Sekunden ...

Fazit:

Ich denke nicht, dass ein retry innerhalb der Minute etwas bringt - die nächste Aktualisierung steht dann ja schon an. Und man bekommt (wie ich getestet habe) dann wahrscheinlich den Fehler "too many requests - try again later".

Wenn die Aktualisierung nicht klappt, klappt sie eben nicht.... Die Zuverlässigkeit finde ich pers. allerdings nicht berauschend. Aber es ist ein kostenloses Angebot!

Der Code kommt .... (möchte noch ein paar Kommentare einbauen)
wk893b
Offline
Beiträge: 134
Registriert: 23 Jan 2022, 09:13
Danksagung erhalten: 10 mal

Re: Cronjob bricht nach einiger Zeit ab - liegt wohl an einem Fehler im PHP-Script - brauche Hilfe

#49

Beitrag von wk893b »

Ha, ha, ha.....

Ich verweise auf #33 und #36 und fühle mich als "Rufer in der Wüste", hiermit quasi hochwissenschaftlich bestätigt. ;) ;) ;)
Viele Grüße

wk893b


https://bh.wetter-alarm.de/
WernerWetter
Offline
Beiträge: 79
Registriert: 07 Dez 2020, 18:19
Wohnort: Ulm / Grimmelfingen
Hat sich bedankt: 10 mal
Danksagung erhalten: 18 mal

Re: Cronjob bricht nach einiger Zeit ab - liegt wohl an einem Fehler im PHP-Script - brauche Hilfe

#50

Beitrag von WernerWetter »

So, ich hab noch ein wenig bei der Fehlerausgabe gebastelt - ohne Wiederholungen o.ä.:

:!: :!: Ich glaube ich hab ein paar Variablennamen geändert @Wetterfrosch: bitte prüfen :!: :!:

Code: Alles auswählen

....

$curlStr =  "http://ws.awekas.at/weatherstation/updateweatherstation.php?ID=$IDp&PASSWORD=$PASSWORDp&action=$actionp&dateutc=$dateutcp&tempf=$tempfb&dewptf=$dewptfb&humidity=$humidityb&winddir=$winddirb&windspeedmph=$windspeedmphb&windgustmph=$windgustmphb&baromin=$barominb";

date_default_timezone_set("Europe/Berlin");
$datum = date("d.m.Y");
$uhrzeit = date("H:i:s");
echo $datum," - ",$uhrzeit,": ";

// cURL initialisieren

$ch = curl_init();

// cURL Optionen setzen
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, $curlStr);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 40);
curl_setopt($ch, CURLOPT_TIMEOUT, 50);

// cURL ausführen (Daten an den Browser weiterreichen) - Ergebnis in Variable speichern
$returncode = @curl_exec($ch);

if($returncode === false)
{
        echo "Error\nZeit: error\n";
        echo 'Curl-Fehler: ' . curl_error($ch);
}
else
{
        $info = curl_getinfo($ch);
        switch ($info['http_code'])
        {
        case 200:  # OK
                echo "Ok -> Access Time:". $info['total_time'] ."\n";
                break;
        default:
                echo 'Error -> Unerwarteter HTTP-Code: ', $info['http_code'], "\n";
                echo "$returncode";
        }
}

@wk893b: Naja "hochwissenschaftlich" :-Su Das läuft nur auf meinem Heimserver, aber da kamen schon einige Ausfälle zusammen.

Edit:
26.08.2022 Update nach 6 Tage:

Code: Alles auswählen

xxx@DMZ2:~# ./calcAwekas.sh 
No of requests 9198
No of errors   116
Availabilty    98.73885627310284844600
02.09.2022

Code: Alles auswählen

./calcAwekas.sh 
No of requests 19374
No of errors   235
Availabilty    98.78703416950552286600
09.09.2022

Code: Alles auswählen

./calcAwekas.sh
No of requests 29520
No of errors   444
Availabilty    98.49593495934959349600
24.09.2022:
so, abschließend nach knapp einem Monat:

Code: Alles auswählen

No of requests 50494
No of errors   1011
Availabilty    97.99778191468293262600
Antworten