SetTimer Problem

Frohes, neues Jahr!

Das neue Jahr geht irgendwie nicht gut los und brauche euere Unterstützung.

Ich will in einem Modul einen Timer setzen. Dieser soll immer am nächsten Monat um 12:00 Uhr ausgeführt werden.


$timestamp = strtotime('first day of next month noon');
$this->SendDebug('timestamp', $timestamp, 0)       
$now = time();
$this->SendDebug('now', $now, 0);
$interval = ($timestamp - $now) * 1000;
$this->SendDebug('interval', $interval, 0);
$this->SetTimerInterval('SendMonthlyJournal', $interval);

Debug liefert dies:


01.01.2019, 15:51:26 |        timestamp | 1549018800
01.01.2019, 15:51:26 |                  now | 1546354286
01.01.2019, 15:51:26 |             interval | 2664514000

Ich benötige ja die Millisekunden von „jetzt“ bis zum nächsten Zeitpunkt „01.02.2019, 12:00“.

Timerliste zeigt dies:

Brett ? Blockade? Bug?

IP-Symcon 5.0, Mac, 13.12.2018, 93cb63bbeb2

Uli

Setze ich z.B.:

$timestamp = strtotime('next day noon');

Dann klappt es… Kann es sein dass der Interval zu groß ist?

Uli

Ja.
Der integer läuft dann über und wird somit negativ.
Michael

Wie löse ich das?

Gesendet von iPhone mit Tapatalk

Du kannst ausprobieren ob du mit Cast auf Float das umgehend kannst.
Aber das könnte dennoch nicht funktionieren, da IPS intern beim Timer int32 nutzt.

Einfacher ist es wohl den Intervall für jeden Tag 12 Uhr zu setzen und dann zu prüfen ob es der 1. des Monats ist.
Michael

Danke Michael,

ich schaue mal, wie ich es umsetze, danke für den Tip!

Uli

Gesendet von iPhone mit Tapatalk