Autor | Zpráva | ||
---|---|---|---|
rudla Profil |
#1 · Zasláno: 22. 4. 2011, 12:15:10
Ahoj,
potřeboval bych poradit. Chci udělat nějakej automat, co přepíše dokument v určitý čas. Jde to nějak? Díky za rady ;) |
||
Spectator Profil |
#2 · Zasláno: 22. 4. 2011, 12:15:45
zkus využít crone
|
||
okolojdouci Profil * |
#3 · Zasláno: 22. 4. 2011, 12:18:42
Jestli máš na hostingu CRON, můžeš si do něj přidávat něco, co se bude opakovaně provádět.
Jestli ne, můžeš daný kus kódu spustit přímo z index.php, s tím že hlídáš aktuální čas a to, jestli ta věc v daném intervalu už neproběhla. |
||
rudla Profil |
#4 · Zasláno: 22. 4. 2011, 12:49:41
okolojdouci:
Jak to tady vidím, můj hosting CRON nepodporuje. Jak to mám teda udělat? |
||
okolojdouci Profil * |
#5 · Zasláno: 22. 4. 2011, 12:55:55
rudla:
Spuštění v daný čas nedosáhneš. Ale jestli jde o to, aby se něco provedlo jednou za den (za hodinu apod), tak si někam zapisuj, kdy to naposled proběhlo a při každém otevření index.php ověř, kolik času uplynulo od posledního provedení. Když je to víc než požadovaný interval, proveď akci a ulož čas. Do souboru nebo do databáze. Je to hodně nepřesné, ale jsou situace, kdy to nevadí. Záleží, na co to potřebuješ. |
||
okolojdouci Profil * |
#6 · Zasláno: 22. 4. 2011, 13:00:47
Nebo když chceš něco provést např. kolem 15. hodiny.
1. Už bylo 15 hodin? 2. Už bylo dneska spuštěno? 3. Jestli ne, spustím a zaznamenám, že jsem to už dneska provedl. Spolehlivost roste s návštěvností. Je rozdíl, jestli máš denně deset návštěv nebo tisíc. |
||
rudla Profil |
#7 · Zasláno: 22. 4. 2011, 13:02:54
okolojdouci:
„Záleží, na co to potřebuješ.“ Potřebuju, aby se vždy v 00:00 hodin přepsal celý obsah souboru pocet-den.txt na 0. Celý obsah bude jen 0. |
||
rudla Profil |
#8 · Zasláno: 22. 4. 2011, 13:03:35
okolojdouci:
„Je rozdíl, jestli máš denně deset návštěv nebo tisíc.“ Takže chápeš, co myslím :) |
||
okolojdouci Profil * |
#9 · Zasláno: 22. 4. 2011, 13:15:26
rudla:
„vždy v 00:00 hodin“ Takže jedině cron. Případně cron někde na jiném hostingu (viděl jsem ho i na něčem free), který si v daný čas řekne o nějakou stránku u tebe a ta spustí akci. |
||
okolojdouci Profil * |
#10 · Zasláno: 22. 4. 2011, 13:25:36
rudla:
„Potřebuju, aby se vždy v 00:00 hodin přepsal celý obsah souboru“ Nejsem si jist, jestli víš co potřebuješ, ale dovolím si spekulaci. Jestli jde o údaj, který se zobrazuje návštěvníkům, tak platí, že: "Potřebuju, aby se prvním otevřením stránky po půlnoci provedla akce." Jestli jde o údaj, který se zobrazuje adminovi, tak platí totéž. Jestli ten soubor zpřístupňuješ nějakému scriptu, dá se zařídit přesměrování. Ten soubor bude existovat jen virtuálně, ve skutečnosti to bude php skript, který udělá to, co píšu nahoře a pak se zatváří, že je to soubor pocet-den.txt s obsahem 0. Ale možná existuje nějaká varianta, na kterou jsem zapomněl. |
||
rudla Profil |
#11 · Zasláno: 22. 4. 2011, 13:33:34
okolojdouci:
„Potřebuju, aby se prvním otevřením stránky po půlnoci provedla akce“ Přesně tak to je. Jakmile odbije půlnoc, soubor se přepíše a po půlnoci se se souborem může dál normálně pracovat, zbytek vím, ale problém je u toho přepisu na nulu :) |
||
okolojdouci Profil * |
#12 · Zasláno: 22. 4. 2011, 13:48:52
rudla:
„.. aby se prvním otevřením stránky po půlnoci provedla akce Přesně tak to je. Jakmile odbije půlnoc, soubor se přepíše“ To je protimluv. Jestliže nemáš cron a nechceš/nemůžeš použít to volání z cronu z cizího webu, tak ten soubor prostě v přesně určený čas nezměníš. Rozlišuj zapisuje se do souboru a někdo/něco chce znáš obsah souboru. To první dokáže jen cron, já ti tady naznačuju, že jestli máš jasno, jakým způsobem si co bude vytahovat obsah souboru, můžeš na to reagovat a ten soubor případně přepsat. „problém je u toho přepisu na nulu“ http://cz.php.net/manual/en/function.fwrite.php |
||
rudla Profil |
#13 · Zasláno: 22. 4. 2011, 14:03:01
okolojdouci:
fwrite znám, hledal jsem sebevíc, ale nenašel jsem, jak přepsat celý soubor na určitou hodnotu, v tomto případě "0". |
||
Louka Profil |
#14 · Zasláno: 22. 4. 2011, 15:45:58
Můj názor:
Jestli chceš, aby se to udělalo o půlnoci = chceš aby první návštěvník další den měl v tom souboru "0". Ukládej si někde, jestli ten den už někdo na stránkách byl a při příchodu na stránku to ověř - pokud ti vyjde, že ten přístup je první ten den, tak změň tu hodnotu souboru na "0" a dál pracuj. Efekt bude ten samý, jako kdyby to dělal cron v 00:00... „problém je u toho přepisu na nulu“ Asi bych to udělal takhle: <?php $soubor = fopen("soubor.txt","w"); fwrite($soubor,"0"); fclose($soubor); ?> |
||
Keeehi Profil |
#15 · Zasláno: 22. 4. 2011, 17:28:42
rudla:
Dá se to udělat, jak ti tady popisují okolojdouci a Louka, jenže ty to nějak pořád nechápeš. Zkus se nad tím pořádně zamyslet. Ty nepotřebuješ přesně v 00:00 ten soubor vymazat! A to je to hlavní. Tobě to stačí udělat až s příchodem prvního návštěvníka. Toto dáš na začátek scriptu, který potom pracuje s tím soubor.txt (pokud to je počítadlo, tak na začátek toho scriptu, který se o to počítadlo stará) if(file_get_contents("datum.txt")!=date("Y-m-d")){ file_put_contents("soubor.txt",0); file_put_contents("datum.txt",date("Y-m-d")); } Pokud to přesto nechápeš, tak můžeš využít služeb http://www.monitoring-serveru.cz/ - čímž si nasimuluješ cron. |
||
rudla Profil |
#16 · Zasláno: 22. 4. 2011, 20:41:32
Louka, Keeehi
Díky oběma, Keeehi, otestuju ten monitoring-serveru.cz a otestuju oba kódy, díky, díky ;) |
||
rudla Profil |
#17 · Zasláno: 23. 4. 2011, 11:24:04
Keeehi:
Místo toho Y-m-d mám zřejmě dát datum, že? |
||
Louka Profil |
#18 · Zasláno: 23. 4. 2011, 11:41:42
rudla:
Ne, to právě ten datum zjistí samo. date("") je funkce, která umí vracet formátované datum. |
||
Louka Profil |
#19 · Zasláno: 23. 4. 2011, 11:43:51
if(file_get_contents("datum.txt")!=date("Y-m-d")){ // = pokud obsah souboru datum.txt není aktuální datum (=ještě nebyla první návštěva) file_put_contents("soubor.txt",0); // dej do souboru soubor.txt nulu (tj to co chceš udělat) file_put_contents("datum.txt",date("Y-m-d")); // a nastav do datum.txt aktuální datum -> při druhé návštěvě už neprojde podmínka // a tím pádem se znovu nebude nastavovat ta nula do soubor.txt } |
||
rudla Profil |
#20 · Zasláno: 23. 4. 2011, 12:06:27
Louka:
A to to datum v datum.txt změní samo v určitý čas? |
||
okolojdouci Profil * |
#21 · Zasláno: 23. 4. 2011, 12:44:23
rudla:
„Jestliže nemáš cron a nechceš/nemůžeš použít to volání z cronu z cizího webu, tak ten soubor prostě v přesně určený čas nezměníš.“ Kterému slovu konkrétně nerozumíš? |
||
Časová prodleva: 6 dní
|
|||
rudla Profil |
#22 · Zasláno: 29. 4. 2011, 09:54:43
okolojdouci:
Hele, zřejmě to funguje, takže ďýki :) |
||
Časová prodleva: 14 let
|
0