Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][MySQL] Wykonanie skryptu w podanym czasie
loginphp
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 31.05.2009

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


Witam,
Chciałbym za Waszą radą stworzyć skrypt działający na zasadzie określonego czasu (dla przykładu allegro wystawiasz aukcje z data i ustalasz datę zakończenia aukcji - w momencie kiedy jest już data zakończenia jest zablokowana możliwość np. podbijania ceny i wskakuje status zakończona).
Chciałbym wykonać podobny skrypt działający na zasadzie - user dodaje wpis i wpis jest ważny przez 5 dni potem wpis sie np. kasuje lub jest archiwizowany. Zakładamy ze dodano np. 40wpisów (przez tego samego usera lub innego) każdemu została narzucona data usunięcia wpisu + 5 dni.
Jak utworzyć taki skrypt który sobie z tym poradzi? Czytałem coś o Cron ale szczerze mówiąc nie wiem jak to rozwiązać.

Proszę o pomoc
Z góry dzięki (IMG:style_emoticons/default/smile.gif)

Ten post edytował loginphp 28.08.2009, 18:19:37
Go to the top of the page
+Quote Post
Wicepsik
post
Post #2





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


W bazie dodajesz kolumne DATE + 5dni i sprawdzasz w skrypcie czy podana tam data jest mniejsza od aktualnej.
Go to the top of the page
+Quote Post
loginphp
post
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 31.05.2009

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


OK ale np. ktoś ma usunięcie wpisu o np.01:00 i chce żeby się ten skrypt wykonał.
Jak skonfigurować wywołanie się skryptu sprawdzającego ?
Jak napisać w php taki skrypt ktory spr usera jego date dodania i date zakonczenia i kiedy warunek jest spełniony czyli mija data zakończenia i np wykonuje dla tego przypadku skrypt który usuwa wpis.
Go to the top of the page
+Quote Post
f1xer
post
Post #4





Grupa: Zarejestrowani
Postów: 403
Pomógł: 68
Dołączył: 20.03.2008

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


jeżeli twój serwer obsługuje CRON to jesteś w domu, piszesz skrypt który pobiera z bazy wszystkie rzeczy, które mają się wykonać o aktualnej godzinie +-5 minut, następnie je wykonujesz i tyle. Taki skrypt podpinasz pod crona, który będzie go uruchamiał np. co godzinę/15 minut czy jak tam chcesz i tyle, a w bazie dajesz pole datetime z wartością oznaczającą kiedy zdarzenie ma się wykonać.
Go to the top of the page
+Quote Post
InosU31
post
Post #5





Grupa: Zarejestrowani
Postów: 221
Pomógł: 14
Dołączył: 11.03.2009
Skąd: Lubaczów

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


Cytat(Wicepsik @ 28.08.2009, 19:23:04 ) *
W bazie dodajesz kolumne DATE + 5dni i sprawdzasz w skrypcie czy podana tam data jest mniejsza od aktualnej.




a ja sie glowie od kilku jak rozwiazac ten problem - bo mialem podobny - i nawet probowalem rozbic date a tu takie proste rozwiazanie:-D (IMG:style_emoticons/default/guitar.gif)




dzieki wielkie Wicepisk  - ten temat jak i ta odp. spadly mi z nieba :-D



loginphp :



tez sie nad tym zastanawialemi chetnie poslucham odpowiedzi. Ja myslalem zrobic tak :

zrobic taki skrypt ktory updatuje dane w bazie i dorzucic go do glownej strony i do podstron w ten sposob jak ktos wejdzie na ktoras  Twoja strone to skrypt sie wykona czyli sprawdzi w bazie danych czas i date czy sie zgadza, uaktualni je i wyswietli zaktualizowane dane;-)



pozdrawiam

Go to the top of the page
+Quote Post
loginphp
post
Post #6





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 31.05.2009

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


Dzięki wszystkim za odpowiedzi (IMG:style_emoticons/default/smile.gif)

Cytat(InosU31 @ 28.08.2009, 20:08:25 ) *
tez sie nad tym zastanawialemi chetnie poslucham odpowiedzi. Ja myslalem zrobic tak :

zrobic taki skrypt ktory updatuje dane w bazie i dorzucic go do glownej strony i do podstron w ten sposob jak ktos wejdzie na ktoras  Twoja strone to skrypt sie wykona czyli sprawdzi w bazie danych czas i date czy sie zgadza, uaktualni je i wyswietli zaktualizowane dane;-)


hmm rozwiązanie ciekawe ale które "lepsze" z użyciem Crona (serwer obsługuje) czy Twój pomysł ?
Macie jakieś argumenty ZA i PRZECIW ?
Go to the top of the page
+Quote Post
f1xer
post
Post #7





Grupa: Zarejestrowani
Postów: 403
Pomógł: 68
Dołączył: 20.03.2008

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


za cronem przemawia to że wszystko się wykona nawet jak nikt nie wejdzie (IMG:style_emoticons/default/smile.gif) . Przy wysyłaniu czegoś "na godzinę" jest to o tyle dobre że ja np. będę chciał wysłać coś o 04:00 rano ale koniecznie o 4 (+- 5 minut), i czy wtedy twój serwis mi to zagwarantuje?
Go to the top of the page
+Quote Post
InosU31
post
Post #8





Grupa: Zarejestrowani
Postów: 221
Pomógł: 14
Dołączył: 11.03.2009
Skąd: Lubaczów

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


hmm

cos nie idzie z tym dodawaniem do daty - tzn. jak zrobie:

  1. UPDATE tabela SET DATA = jakas_data + 3


to mi w jakas_data daje poprawny wynik ale tylko w pierwszym rekordzie a co zrobic zeby updatowalo wszystkie rekordy z tabeli zeby dawalo ten wynik: jakas_data + 3 ?

pozdrawiam

Go to the top of the page
+Quote Post
thek
post
Post #9





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Daty tak nie dodajesz (IMG:style_emoticons/default/smile.gif) Lepiej zobacz składnię ADDATE (IMG:style_emoticons/default/winksmiley.jpg) A wiesz czemu? Bo skąd ma baza wiedzieć czy chcesz do tej jaką podałeś dodać 3 minuty, 3 dni czy 3 lata?

Ten post edytował thek 28.08.2009, 22:37:22
Go to the top of the page
+Quote Post
InosU31
post
Post #10





Grupa: Zarejestrowani
Postów: 221
Pomógł: 14
Dołączył: 11.03.2009
Skąd: Lubaczów

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


Cytat(thek @ 28.08.2009, 23:36:22 ) *
Daty tak nie dodajesz (IMG:style_emoticons/default/smile.gif) Lepiej zobacz składnię ADDATE (IMG:style_emoticons/default/winksmiley.jpg) A wiesz czemu? Bo skąd ma baza wiedzieć czy chcesz do tej jaką podałeś dodać 3 minuty, 3 dni czy 3 lata?

no ale pierwszy rekord mi updatuje wiec chyba wie;-) nie wiem tylko dlaczego


 nie updatuje wszystkich rekordow tylko pierwszy
Go to the top of the page
+Quote Post
thek
post
Post #11





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




No cóż... Wszystko zależy od skryptu. Brak określenia wiersza sprawia, że ta operacja powinna się wykonać dla każdego rekordu... No chyba że juz po pierwszym rekordzie następuje błąd. Baza zawsze wykonuje swoje działania aż do napotkania błędu. Jeśli miałeś 10 dodań do bazy a błąd wystąpił w 6 to wcześniejsze 5 się wykonało, ale przy błędnym zapytanie zostało przerwane. Stąd też wniosek, że pierwsze zapytanie przeszło sitko, ale drugie juz było błędne na tyle, że baza powiedziała: "Temu zapytaniu już podziękujemy..." (IMG:style_emoticons/default/winksmiley.jpg) Wiesz jakie może to być wkurzające gdy robisz UPDATE całej bazy i Ci nagle wyskoczy błąd, po przejściu kilku tysięcy rekordów, bo akurat trafiło się na nieprawidłową wartość w kolumnie... Ja póki co miałem farta i takie cyrki się jedynie na localhoście zdarzały w fazie testowej. Po użyciu właściwych funkcji wbudowanych w silnik bazy nie powinno jednak byc niejednoznaczności i problemów (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
InosU31
post
Post #12





Grupa: Zarejestrowani
Postów: 221
Pomógł: 14
Dołączył: 11.03.2009
Skąd: Lubaczów

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


thek@ masz racje:-) juz dziala



  1. SELECT * FROM tabela;
  2. UPDATE tabela SET data_dodana = ADDDATE(kolumna_data, INTERVAL 1 DAY);


mozesie komus przyda;-)

pozdrawiam i dzieki i sory ze nie na swoim temacie pisalem

Go to the top of the page
+Quote Post
CyberDuck_
post
Post #13





Grupa: Zarejestrowani
Postów: 135
Pomógł: 15
Dołączył: 17.08.2009

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


A dlaczego nie stosujesz znacznikow czasu ?
Postepowanie z nimi jest duzo prostsze i uzyteczniejsze.
Poczytaj sobie o znacznikach czasu i zobacz o ile prosciej
bedzie operowac na bazie i pozniej reprezentowac dane lub
przeliczac rozne wartosci ...
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 4.10.2025 - 00:02