Avatar
Michal Vašíček
Tým ITnetwork
Avatar
Michal Vašíček:

Hoj,
jde v PHP nějak zařídit, aby se něco provedlo v určitý čas? Samozřejmě když ta stránka bude aktivní.
Dík

Odpovědět 23.12.2013 9:17
Příspěvek může obsahovat stopy arašídů, sarkasmu a sóji.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Michal Vašíček
Kit:

Používá se na to Cron.

Nahoru Odpovědět  +1 23.12.2013 9:21
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Michal Vašíček
Tým ITnetwork
Avatar
Odpovídá na Kit
Michal Vašíček:

OK, takže ani nemusí být stránka aktivní. To zas něco bude...

Nahoru Odpovědět 23.12.2013 9:25
Příspěvek může obsahovat stopy arašídů, sarkasmu a sóji.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Michal Vašíček
Kit:

Pokud to má být na aktivní stránce, tak dobře poslouží AJAX.

Nahoru Odpovědět 23.12.2013 9:33
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Michal Vašíček
Jiří Gracík:

U některých webhostingů máš v administraci záložku CRON a tam můžeš nacpat url, které se má v nějakém intervalu volat :)

Editováno 23.12.2013 9:38
Nahoru Odpovědět  +1 23.12.2013 9:38
Creating websites is awesome till you see the result in another browser ...
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Matúš Petrofčík:

ak by som mal CRONom spúšťanú úlohu v www.domena.sk/uloha.php, a niekto by v prehliadači otvoril túto úlohu www.domena.sk/uloha.php, znamenalo by to spustenie úlohy užívateľom?

Nahoru Odpovědět 23.12.2013 9:52
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Matúš Petrofčík
Jiří Gracík:

Ano. Můžeš tam nacpat klíč přes GET, se kterým to budeš spouštět z CRONu a bez něj se to neprovede :)

Nahoru Odpovědět 23.12.2013 9:53
Creating websites is awesome till you see the result in another browser ...
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Odpovídá na Jiří Gracík
Matúš Petrofčík:

dík, toto sa určite zíde :)

Editováno 23.12.2013 9:58
Nahoru Odpovědět 23.12.2013 9:56
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Jiří Gracík
Redaktor
Avatar
Odpovídá na Matúš Petrofčík
Jiří Gracík:

Nevím, jestli to je ideální technika, ale mě nikdy nic lepšího nenapadlo.

Nahoru Odpovědět 23.12.2013 10:08
Creating websites is awesome till you see the result in another browser ...
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Matúš Petrofčík:

mám obavu že mi niekto zistí prítomnosť súborov ako www.domena.sk/uloha.php a potom zneužije
názov premennej v $_GET poznám len ja, a ktomu do nej môžem vložiť kľúč :D

idem pozrieť či je niečo o CRONe v článkoch :)

Nahoru Odpovědět 23.12.2013 10:44
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Kit
Redaktor
Avatar
Odpovídá na Matúš Petrofčík
Kit:

Podívej se na výstup PHP funkce GetAllHeaders(), když ten skript zavolá Cron. Když k tomu přidáš ještě nějaký token, tak by to mělo stačit.

Nahoru Odpovědět  +1 23.12.2013 11:51
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Marek Z.
Redaktor
Avatar
Marek Z.:

V podstatě by se to dalo vyřešit ošetřením IP adresou, povolil bys to jednoduše pouze pro server..

Nahoru Odpovědět  +2 23.12.2013 14:35
Chybami se člověk učí, běžte se učit jinam!
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Matúš Petrofčík
Daniel Vítek:

Jde to třeba přes htaccess - ten PHP soubor hodíš do nějaké složky, vedle něj vytvoříš htaccess, do kterého vložíš

Deny from all
Allow from 127.0.0.1

(což by mělo fungovat) - když ten soubor bude chtít otevřít někdo jiný než server, vyhodí to 403

 
Nahoru Odpovědět 25.12.2013 9:51
Avatar
Matúš Petrofčík
Šéfredaktor
Avatar
Matúš Petrofčík:

[me|]270[/me|­],Daniel Vítek,[me|]92­06[/me|]: dík za odpovede! určite to niekedy použijem :)

Nahoru Odpovědět 25.12.2013 9:54
obsah kocky = r^2 ... a preto vlak drnká
Avatar
Xin_
Člen
Avatar
Xin_:

a existuje i jiná možnost než cron?

Nahoru Odpovědět 25.12.2013 22:34
Zvědavost nás žene vpřed :)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Xin_
Kit:

Zkus napsat, jak by sis to představoval, co by bylo generátorem události.

Nahoru Odpovědět 25.12.2013 22:38
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Xin_
Člen
Avatar
Xin_:

no to právě nevím co by dělalo urdálost, jestli nějak jde aby server s určitýma funkcema fungoval sám o sobě, tuším že by to šlo vytvořením programu přímo na serveru ale jestli to jde vyřešit i webovými jazyky

Nahoru Odpovědět 25.12.2013 22:44
Zvědavost nás žene vpřed :)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Xin_
Kit:

To server umí. Ta služba se jmenuje Cron.

Nahoru Odpovědět 25.12.2013 22:46
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Xin_
Člen
Avatar
Odpovídá na Kit
Xin_:

a jak to tam vlastně funguje? cron sputí script a po dokončení čeká na další interval kdy ho má znovu spustit?
takže by stačilo ty funkce dát do smyčky?

Nahoru Odpovědět 25.12.2013 22:49
Zvědavost nás žene vpřed :)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Xin_
Kit:

Ne. Například každých 10 minut spustí skript bez ohledu na to, zda ten předchozí doběhl či ne. Může takhle naráz spustit třeba 1000 skriptů a za 10 minut (tedy v 10., 20., 30., 40., 50., 60. minutě každé hodiny) zase.

Nahoru Odpovědět 25.12.2013 22:55
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Xin_
Člen
Avatar
Odpovídá na Kit
Xin_:

a kdyby se jednalo např v nějaké web hře o to že několik něčeho za určitý čas přibude tak by bylo dobré aby byl update řekněme co 1s pokud by to bylo pro hodně účtů

Nahoru Odpovědět 25.12.2013 23:01
Zvědavost nás žene vpřed :)
Avatar
Xin_
Člen
Avatar
Xin_:

např jestli znáš divoke kmeny nebo travian nebo jakoukoli tohohle typu hru tak jak se to pak řeší? přes cron?

Nahoru Odpovědět 25.12.2013 23:01
Zvědavost nás žene vpřed :)
Avatar
mkub
Redaktor
Avatar
Odpovídá na Kit
mkub:

kazdych 10 minut 1000 skriptov naraz? nezatazilo by to neunormne systemove prostriedky?
ved pomocou crun sa spustaju aj ine veci na udrzbu systemu, napr. sledovanie update aplikacii na serveri,...

 
Nahoru Odpovědět 25.12.2013 23:03
Avatar
Kit
Redaktor
Avatar
Odpovídá na Xin_
Kit:

To se dělá jinak. Když hráč na něco klikne, tak se změří čas od posledního kliknutí a peníze či materiál se dopočítají.

Nahoru Odpovědět 25.12.2013 23:04
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Xin_
Člen
Avatar
Odpovídá na Kit
Xin_:

tahle varianta mě napadla ale je pro mě (lenivce) poměrně zdlouhavé naprogramovat :D

Nahoru Odpovědět 25.12.2013 23:06
Zvědavost nás žene vpřed :)
Avatar
Kit
Redaktor
Avatar
Odpovídá na mkub
Kit:

Ubuntu na mém notebooku přežilo už horší věci. Takový server s tím problémy nemá.

Nahoru Odpovědět  +1 25.12.2013 23:07
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Xin_
Kit:

Ono to není zas tak těžké. Zvládne to i malá vnořená procedura v databázi.

Nahoru Odpovědět 25.12.2013 23:09
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Xin_
Člen
Avatar
Odpovídá na Kit
Xin_:

pro HW ne ale pro mě jako programátora dělat hafo funkcí ktere budou dělat tolik věcí :D já rád píšu co nejjednodušeji, proto hledám i nejjednodužší řešení :)
to s tím počítáním času mi příde jako nejméně náročne pro HW ale náročné na sepsání :D

Nahoru Odpovědět 25.12.2013 23:09
Zvědavost nás žene vpřed :)
Avatar
Xin_
Člen
Avatar
Xin_:

php a věci okolo serverech se zatím jen učím, ale sem hold strašně zvědavý :D

Nahoru Odpovědět 25.12.2013 23:10
Zvědavost nás žene vpřed :)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Xin_
Kit:

Počítej s tím, že jako webmaster se musíš naučit 7 jazyků, které musíš správně zkombinovat, aby to celé fungovalo jako jedna webová prezentace.

Nahoru Odpovědět 25.12.2013 23:19
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Xin_
Člen
Avatar
Odpovídá na Kit
Xin_:

přesněji které ? ať vím s čím mám počítat

Nahoru Odpovědět  -1 25.12.2013 23:22
Zvědavost nás žene vpřed :)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Xin_
Kit:

- Apache (.htaccess)
- PHP
- MySQL
- HTML
- CSS
- Javascript
- případně nějaký šablonovací jazyk nebo framework

Nahoru Odpovědět  +2 25.12.2013 23:25
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Xin_
Člen
Avatar
Odpovídá na Kit
Xin_:

takže už se jen doučit pořádně php, přejít s postgreSQL na mySQL a hudá na apache a JS... už se těším :)

Nahoru Odpovědět  +1 25.12.2013 23:27
Zvědavost nás žene vpřed :)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Xin_
Kit:

PosgreSQL je sice lepší než MySQL, ale většina hostingů umí bohužel jen MySQL.

Nahoru Odpovědět 25.12.2013 23:30
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Xin_
Kit:

Pokud umíš PosgreSQL a nechceš dělat příliš komplikované dotazy (u webů se stejně nedělají) tak můžeš zkusit SQLite. Používá téměř plnohodnotný jazyk SQL, je velmi podobný PosgreSQL, jen má méně funkcí. V případě potřeby se však chybějící funkce dají dopsat v PHP. Z PHP se používá stejný ovladač: PDO.

Nahoru Odpovědět 25.12.2013 23:42
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Xin_
Člen
Avatar
Odpovídá na Kit
Xin_:

syntaxí jsou si podobné tak jen zjistit co je jinak atd a bude :)

Nahoru Odpovědět 26.12.2013 10:28
Zvědavost nás žene vpřed :)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Xin_
Kit:

Hlavní rozdíl je v tom, že SQLite není server, ale že běží uvnitř PHP. Má to své výhody i nevýhody.

Nahoru Odpovědět 26.12.2013 10:47
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

"To se dělá jinak. Když hráč na něco klikne, tak se změří čas od posledního kliknutí a peníze či materiál se dopočítají."

Zrovna takovou hru děláme. Ostatní hráči potřebují operovat s některými tvými proměnnými, takže bys to musel dopočítávat dost často. Typická situace je třeba útok na tvojí vesnici, kde jsi dal něco stavět, před útokem se musí spočítat co tam je postavené, aby se to případně zničilo. Lepší je dát tam minutový cron a mít všechna data v reálném čase, brutálně se to zjednoduší.

Nahoru Odpovědět 26.12.2013 11:07
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Tohle není problém, protože se to dopočítává automaticky při každém dotazu na stav hráče. Cron není potřebný.

Nahoru Odpovědět 26.12.2013 11:19
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Vrstva co to dopočítává bude při komplexnosti hry vždy složitější než cron, co by to jednoduše vykonával z nějaké fronty dějů.

Nahoru Odpovědět 26.12.2013 11:29
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:
SELECT stav+prirustek*TIMESTAMPDIFF(second, timestamp, now()) AS body FROM hrac WHERE id=$id;

Co je na tom složitého? Díky této prkotině se můžeš zbavit cronu. Můžeš si to dát i do VIEW.

Nahoru Odpovědět  +1 26.12.2013 11:37
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Navíc tím razantně snížíš zátěž databáze.

Nahoru Odpovědět 26.12.2013 11:41
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Mohu tě ujistit, že u reálné hry by ten dotaz takhle nevypadal :) Viděl jsem dotazy travian-like hry, která byla dělána tímto způsobem. Proto jsem to udělal přes cron.

Nahoru Odpovědět 26.12.2013 11:42
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

A já tě zase mohu ujistit, že jsem ten SELECT napsal záměrně jednoduše, aby to bylo pochopitelné. Místo jednoho sloupce jsou tam prostě dva plus timestamp. Jejich hodnoty se modifikují pouze při modifikaci jiných položek v záznamu. Pokud máš správně udělanou normalizaci, tak to není nic složitého. Modifikují se záznamy jen těch hráčů, kteří skutečně hrají. Hra dokonce běží i tehdy, když má server odstávku.

Nahoru Odpovědět 26.12.2013 11:51
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Mně je to jedno, jistě takovou hru také programuješ a víš co tam je třeba řešit. Jen jsem chtěl poukázat na další možné řešení, které je také správné, ačkoli ty to uznat asi nedokážeš.

Nahoru Odpovědět 26.12.2013 11:59
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 45 zpráv z 45.