Autor Zpráva
Stepanka
Profil *
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 *
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 *
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 *
hiddenalign, Mik8748_away

Aha, vlastně máte pravdu, nevím proč mě to nenapadlo dřív.. Děkuju mockrát!!
nightfish
Profil
mít vlastní server, půjde použít program "at", který slouží je spuštění v daný čas
Stepanka
Profil *
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
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 *
nightfish
Takže podobně jako píšu o příspěvek výše, akorát
 if (now() >= $row['datum']) { udelej neco; }
?
Kajman_
Profil *
Ne, dát to rovnou do dotazu...

select ... where now()>=`datum` and ifnull(`problehlo`,0)=0
Stepanka
Profil *
Kajman_
děkuji ;-)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0