Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Automatyczna aktualizacja rekordu po danym czasie
rebuk
post 14.09.2014, 19:01:24
Post #1





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 14.09.2014

Ostrzeżenie: (0%)
-----


Witajcie,
zastanawiam się jak można zrobić automatyczną zmianę rekordu w bazie po przekroczeniu zadanej daty. Czyli chodzi mi o coś co można spotkać np. na stronach z ogłoszeniami - mam w tabeli m.in. kolumny status i data_zakonczenia i chciałbym żeby po 'przeterminowaniu' danego ogłoszenia zmienił się jego status (np. z aktywne na zakończone).
Myślałem o Cronie lub Event Scheduler, ale nie wiem czy częste uruchamianie (może nawet co sekundę) to dobre rozwiązanie gdy np. najbliższe ogłoszenie kończy się za tydzień...
Czy są jakieś lepsze sposoby?
Go to the top of the page
+Quote Post
kartin
post 14.09.2014, 19:12:19
Post #2





Grupa: Zarejestrowani
Postów: 246
Pomógł: 79
Dołączył: 25.05.2010

Ostrzeżenie: (0%)
-----


Zasadniczo możesz się pozbyć się pola status. Do listingu możesz pobierać np. tylko te ogłoszenia w których data zakończenia jeszcze nie nastąpiła, a przy wyświetlaniu szczegółów ogłoszenia status wyświetlasz też stosownie do daty zakończenia.


--------------------
Jeśli ten post pomógł to kliknij przycisk po lewej stronie.
Nie pomagam przez PW, GG, e-mail, faks, telegram, znaki dymne, ...
Go to the top of the page
+Quote Post
Damonsson
post 14.09.2014, 19:36:27
Post #3





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Możesz sobie wykorzystać CRONa, ale na jednym serwerze to się zrobi lipa z wydajnością.

Status userowi zmieniasz za pomocą JS, pobierając czas do zakończenia i odliczając to po jego stronie, plus przy każdym odświeżeniu strony pobierasz realny czas do zakończenia ogłoszeń widocznych na stronie, bo jakieś obsunięcia mogą się zawsze pojawić.
Go to the top of the page
+Quote Post
rebuk
post 16.09.2014, 19:39:58
Post #4





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 14.09.2014

Ostrzeżenie: (0%)
-----


Do samego wyświetlania rekordów faktycznie to starczy, problem pojawia się gdy chcemy aby w chwili zakończenia pojawiała się jakaś akcja (np. wysłanie maila do usera).
A może coś takiego:
cron np. co godzinę uruchamia skrypt sprawdzający czy w przeciągu tej godziny kończy się któreś ogłoszenie -> jeżeli tak, to odlicza pozostały czas i po jego upływie wykonuje akcje.

A jak takie zadania są realizowane w praktyce, np. na allegro?
Go to the top of the page
+Quote Post
kartin
post 16.09.2014, 22:04:13
Post #5





Grupa: Zarejestrowani
Postów: 246
Pomógł: 79
Dołączył: 25.05.2010

Ostrzeżenie: (0%)
-----


Załóż indeks na kolumnę data_zakonczenia. Do tego cron z wysyłaniem maila np. co 2-10 min. Zresztą jak nie masz dużego ruchu lub milionów rekordów to tragedii z wydajnością pewnie nie będzie nawet jak puścisz co minutę.
Nie wydaje mi się aby Allegro wysyłało maile natychmiast po zakończeniu aukcji, zwykle czeka się kilka minut, tak samo trzeba czekać zanim w panelu administracyjnym zmieni się status aukcji np. z wystawione na zakończone.


--------------------
Jeśli ten post pomógł to kliknij przycisk po lewej stronie.
Nie pomagam przez PW, GG, e-mail, faks, telegram, znaki dymne, ...
Go to the top of the page
+Quote Post
rebuk
post 18.09.2014, 09:11:53
Post #6





Grupa: Zarejestrowani
Postów: 8
Pomógł: 0
Dołączył: 14.09.2014

Ostrzeżenie: (0%)
-----


Dzięki za pomoc, będę kierował się tą droga smile.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.08.2025 - 12:49