Autor | Zpráva | ||
---|---|---|---|
Stepanka Profil * |
#1 · Zasláno: 22. 9. 2008, 17:10:13
Ahoj, zdravím všechny..
Nevěděl by někdo, jak přibližně by mohl vypadat skript pro CRON, který se má spouštět nepravidelně? Konkrétně třeba situace odesílání mailů. Mám volbu 1) "Odeslat ihned" 2) "Odeslat později - zvolte čas pro odeslání" Při zvolení nějakého data a času v kalendáří uložím tuto hodnotu jako datetime do databáze. Dále mám skript, který by se v tu danou dobu (která je uložena v db) měl spustit. Chybí mi pouze jediná věc a to je nějaká informace, jak by se toto dalo propojit, aby se to odesílalo v tu danou dobu, která je uložena v databázi. Všechno co jsem našla se týkalo pouze pravidelného odesílání skriptu.. Nikoli odesílání v určený den, hodinu a minutu. Jde tohle vůbec? Předem mockrát děkuju za rady. |
||
hiddenalign Profil * |
#2 · Zasláno: 23. 9. 2008, 12:17:41
Toto se bohužel přesně udělat nedá - musel by se napsat nějaký script, který by dokázal propojit prostředí cronu s mysql, což je tak náročná představa co se týče programovacích znalostí či možností hostingu, že nemá cenu se s ní vůbec zaobírat.
Nejjednodušší řešení je cronem spouštět operační script třeba každou minutu (pozor na zátěž serveru - nedoporučuji toto používat v případech, kde se operuje s vícero databázovými funkcemi a mohlo by tak dojít k přetížení serveru) a vždy přes něj zkontrolovat uložené časy v db, na jejichž základě pak provést požadovanou akci (odeslání emailu, apod.) |
||
Mik8748_away Profil * |
#3 · Zasláno: 23. 9. 2008, 12:34:41
Stepanka
udelas skript, kterej se bude cronem poustet treba kazdejch 15 minut, a ve volbe Odeslat pozdeji umoznis akorat casy po 15 minutach nebo po celejch hodinach kontrolovat to kazdou minutu je kravina, stejne vestina beznych hostingu neumozni cron casteji jak 5 minut resit konkretni cas na minutu presne je taky nesmysl, protoze stejne nijak nezarucis ze v danej cas email odejde ci ze ho prijemce dostane myslim ze posilani +- hodina staci bohate |
||
Stepanka Profil * |
#4 · Zasláno: 23. 9. 2008, 13:01:04
hiddenalign, Mik8748_away
Aha, vlastně máte pravdu, nevím proč mě to nenapadlo dřív.. Děkuju mockrát!! |
||
nightfish Profil |
#5 · Zasláno: 23. 9. 2008, 13:19:02
mít vlastní server, půjde použít program "at", který slouží je spuštění v daný čas
|
||
Stepanka Profil * |
#6 · Zasláno: 23. 9. 2008, 19:57:20
hiddenalign
vždy přes něj zkontrolovat uložené časy v db, na jejichž základě pak provést požadovanou akci (odeslání emailu, apod.) Jak bys to vlastně kontroloval? Něco ve stylu DOTAZ NA DB, $row = mysql_fetch_array... if (now() == $row['datum']) { udelej neco; } Nenapadá mě jak jinak porovnávat čas uložený v databázi s aktuálním časem.. |
||
nightfish Profil |
#7 · Zasláno: 23. 9. 2008, 20:03:28
Stepanka
spíš bych ten dotaz koncipoval tak, že si vytáhneš všechny neprovedené akce, které se měly provést v minulosti, provedeš je a poznačíš si, že jsi akci provedla... |
||
Stepanka Profil * |
#8 · Zasláno: 24. 9. 2008, 08:15:25
nightfish
Takže podobně jako píšu o příspěvek výše, akorát if (now() >= $row['datum']) { udelej neco; } |
||
Kajman_ Profil * |
#9 · Zasláno: 24. 9. 2008, 08:40:02
Ne, dát to rovnou do dotazu...
select ... where now()>=`datum` and ifnull(`problehlo`,0)=0 |
||
Stepanka Profil * |
#10 · Zasláno: 24. 9. 2008, 09:30:18
Kajman_
děkuji ;-) |
||
Časová prodleva: 16 let
|
0