Ein milli() Überlauf sollte auch kein Problem sein wenn man es gescheit programmiert.
Selbst wenn „lastMillis“ 4.294.967.290 sind und das von millis() abziehst was aktuell z.B. 1000 hat kommt 1006 zum Vergleich heraus. Die Rechnung geht wie der Überlauf selbst über die Grenzen hinaus.
Beispiele zur besseren Verständlichkeit:
0 - 1 = 4.294.967.295
0 - 4.294.967.295 = 1
1.000 - 1.001 = 4.294.967.295
1.000 - 4.294.967.295 = 1.001
4.294.967.295 + 1 = 0
4.294.967.295 + 1.000 = 999
3.000.000.000 - 4.294.967.295 = 3.000.000.001
Und der Überlauf findet nur aller 49 Tage und ca. 17h statt.