Wpis z mikrobloga

zarzuć ktoś koncepcją albo jakimś pomysłem na rozwiązanie tego. Mam sobie panel admina w php i dopisuje sobie przypominajkę - czyli taki prosty interface gdzie mogę dodać date i czas wydarzenia, to trafia do bazy (tak żeby mi wysłało SMSa jak się zbliża przegląd, oc, jakieś płatności itp). I o ile chodzi o przypomnienia w konkretnym czasie to nie ma problemu bo po prostu sobie w cronie co minute sprawdzam czy jest jakieś przypomnienie z timestampem mniejszym niż aktualny timestamp a jeżeli tak to odpalam to przypomnienie.

Natomiast mam problem z wymyśleniem jakiegoś systemu który by obsługiwał cykliczne przypomnienia, np. w każdy 14 dzień miesiąca, co 7 dni, co 23 dni, w każdą środę itp itd. Nadal chciałbym to osiągnąć tylko kodem php i wpisami w bazie a nie dużą ilością cronów bo cron odpalający co minutę ma być jeden.

Jedno rozwiązania to np. w przypadku przypomnienia co 7 dni, to po prostu dodam sobie tysiąc wpisów do bazy i każdy o 7 dni starszy i będę miał zapas tych wpisów na kilka lat ale za to syf w bazie. Może ktoś ma jakiś pomysł?

#programowanie #mysql #php
  • 8
teraz w sumie pomyślałem, że mógłbym dodać kolumnę w bazie i tam trzymać info czy to jednorazowe przypomnienie czy wielokrotne i jak często ma być powtarzane, i wtedy momencie obsługi takiego przypomnienia, to go nie usuwać z bazy tylko aktualizować timestamp na taki z przyszłości czyli np. +7 dni
@sha128: tak jak napisałeś - najlepiej konfig w bazie i ustawiasz cykl. Cron co minute. Nie jest ważne czy ten sam proces sprawdza jednorazowe przypomnienia czy cykliczne. Robi to po kolei. Zobacz jakie opcje ma Google Calendar. W ogóle jeśli dla siebie, to użyj Googla ( ͡° ͜ʖ ͡°)
to go nie usuwać z bazy tylko aktualizować timestamp na taki z przyszłości czyli np. +7 dni


@sha128: No i tak by było najwygodniej. Tylko w razie wystąpienia zmiany czasu przypomnienie cykliczne ustawione na konkretną godzinę będzie wymagało uwzględnienia +1/-1h.
W ogóle jeśli dla siebie, to użyj Googla ( ͡° ͜ʖ ͡°)


@Jare_K: odpada, mam za dużo swoich api, integracji z mailami, smsami, telegramami, powiadomieniami pusz i innymi gównami żeby to robić w jakimś gotowym narzędziu
@sha128: polecam tą paczkę https://github.com/lavary/crunz zapisujesz to w bazie w cron format i przy uruchomieniu wykonujesz wszystkie rekordy. Jak masz ich sporo to trzeba by batchowach na kolejce, albo po prostu dzieląc na więcej cronjobów po jakimś parametrze (np. użytkowniku), żeby nie było rozjazdów spowodowanych czasem wykonywania schedulera.
@sha128: zapisywanie w formacie crona w bazie jest spoko, bo możesz zdefiniować że w każdy 1. dzień miesiąca czy w każdy poniedziałek, ale nie ogarnie jednego case'u - "co X dni". Takiej definicji nie ogarniesz w czymś niejako bezstanowym, czym jest zapis "cronowy".

Wydaje mi się że taki Kalendarz Google całą logikę planowania realizuje wprzód przy dodawaniu, tj. jak ustawisz wydarzenie to tworzy X wpisów X lat do przodu. Mógłbyś tak