Zadejte hledaný výraz...

Odpočet času + insert / update do databáze

Jarek P
verified
rating uzivatele
(2 hodnocení)
19. 12. 2010 17:52:41
Zdravím,
potřeboval bych poradit. Jde o to že pracuju na jednom projektu a je zde situace se kterou si nevím rady.
Mám formulář, po stisknutí tlačítka Odeslat (submit) by se měly data insertnout do databáze, ale až za 45 minut od kliknutí na tlačítko (přesměrování na tu druhou stránku s insertem)... Dá se to udělat nějak pomocí PHP, nebo JavaScriptu? Díky předem všem..
Vím že by stačilo přidat sloupec s časem, a upravit dotazy aby nebraly v potaz řádky mladší 45 minut, ale v mém případě by tohle bylo velmi složité..
19. 12. 2010 17:52:41
https://webtrh.cz/diskuse/odpocet-casu-insert-update-do-databaze/#reply592791
hm
verified
rating uzivatele
(20 hodnocení)
19. 12. 2010 18:54:04
uloz si to do druhe tabulky vcetne casu kdy sis to ulozil a nastav cron ulohu ktera bude kazdou minutu sahat do te tabulky a kontrolovat zda jsou tam ve fronte nejake radky co uz maji 45 minut pryc, pokud nejsou, nic nedela, pokud jsou, presune je do zive tabulky...
19. 12. 2010 18:54:04
https://webtrh.cz/diskuse/odpocet-casu-insert-update-do-databaze/#reply592790
Co to znamená přesně "chci data vložit až za 45 minut"? Proč?
19. 12. 2010 19:02:02
https://webtrh.cz/diskuse/odpocet-casu-insert-update-do-databaze/#reply592789
Jarek P
verified
rating uzivatele
(2 hodnocení)
19. 12. 2010 19:45:55
Nějde v tom případě nějak využít sleep(); ?
19. 12. 2010 19:45:55
https://webtrh.cz/diskuse/odpocet-casu-insert-update-do-databaze/#reply592788
duben
verified
rating uzivatele
(49 hodnocení)
19. 12. 2010 19:50:53
Nechápu proč je varianta řádku s filtrem na 45 minut složitější, ani proč to musí být přesně 45 minut, možná pokud prozradíš víc, je možné že přijdeme s mnohem lepším řešením, než vymýšlet spuštění nějakého scriptu 45 minut po vložení.
Možností toho co chceš je určitě víc, nástřel některých variant:
1. Spouštět každou minutu CRON, který bude zpracovávat jen záznamy s flagem "nezpracováno" a stářím =< 45 mint
2. Pokud to umožňuje DB engine použít trigger, který naplánuje spuštění CRONU přesně za 45 minut s ID záznamu (resp. nastaví spuštění JOBu pokud je to pod Windows)
3. Akce která pracuje se záznamy, nejprve zpracuje záznamy staré 45+ minut a pak se teprve provede požadovaná akce nad záznamy
---------- Příspěvek doplněn 19.12.2010 v 19:53 ----------
Napsal Jarek P;606971
Nějde v tom případě nějak využít sleep(); ?
To je opravdu brutální nápad, představa že v paměti běží otevřené scripty po dobu 45 minut (pokud to budeš mít server nastavený tak aby se do několik minut neukončené PHP nekillnuly), tak ti to s dost velkou pravděpodobností přetíží otevřené sokety, nebo přeteče paměť nebo dojde k něčemu dalšímu. Nad tímhle řešením ani náhodou nepřemýšlej. A jestli to máš na nějakém webhostingu a ne na svém serveru, dostal bys za něco takového rychlý STOP svému účtu (resp. oni by za tebe ty neukončené scripty do pár minut shodili).
---------- Příspěvek doplněn 19.12.2010 v 19:57 ----------
Rozumné použití sleep kvůli DB je maximálně v případě, že používáš transakční zpracování dat, asynchroní zpracování dat (bez kontroly dokončení), složité triggery nebo replikace dat a někdy script doběhne dřív, než se uloží vše jak má a ty na konci scriptu potřebuješ výsledná uložená data zpracovat. V takovém, opravdu hodně speciální případě, se pozdrží pomocí delay script o pár sekund. Ale rozhodně ne v řádu desítek minut.
19. 12. 2010 19:50:53
https://webtrh.cz/diskuse/odpocet-casu-insert-update-do-databaze/#reply592787
Kamil Tomšík
verified
rating uzivatele
(3 hodnocení)
20. 12. 2010 20:47:47
1. pouzij cron, jak bylo receno - minutovy interval, jedna instance, je to nejjednodussi a zaroven nejspravnejsi reseni.
2. trigger nepouzivej - sou s tim jenom problemy, kdysi jsem to pouzil na jeden projekt a nakonec se to muselo cele prepsat, protoze na hostingu nebyla spravne verze mysql, kdyz jsem to zkousel podruhe, tak zakaznik zase nebyl schopny pridelit prislusna prava, uz nikdy vice...
3. sleep ani nahodou - apache ma limit na otevrena pripojeni, jak bylo receno. dovoluju si ale rict, ze ani v pripade, ze script dobehne driv neni spravne reseni sleep - spravne reseni je meta s refreshem za par vterin.
20. 12. 2010 20:47:47
https://webtrh.cz/diskuse/odpocet-casu-insert-update-do-databaze/#reply592786
naniccz
verified
rating uzivatele
(3 hodnocení)
20. 12. 2010 22:40:07
Já jsem zvyklý mít v takových tabulkách sloupce platiod a neplatipo. Tohle by to taky řešilo
20. 12. 2010 22:40:07
https://webtrh.cz/diskuse/odpocet-casu-insert-update-do-databaze/#reply592785
Kamil Tomšík
verified
rating uzivatele
(3 hodnocení)
21. 12. 2010 00:32:16
Napsal naniccz;607300
Já jsem zvyklý mít v takových tabulkách sloupce platiod a neplatipo. Tohle by to taky řešilo
jasne - zalezi na tom, co presne tazatel chce - v pripade, ze mu jde pouze o platnost, muze data vlozit do db hned a jenom nastavit odkdy maji platit a pak je to asi nejlepsi reseni...
21. 12. 2010 00:32:16
https://webtrh.cz/diskuse/odpocet-casu-insert-update-do-databaze/#reply592784
Pro odpověď se přihlašte.
Přihlásit