Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze: Čas

Aktivity
Avatar

Člen
Avatar
:23.12.2013 9:17

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
Avatar
Kit
Tvůrce
Avatar
Odpovídá na
Kit:23.12.2013 9:21

Používá se na to Cron.

Nahoru Odpovědět
23.12.2013 9:21
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar

Člen
Avatar
Odpovídá na Kit
:23.12.2013 9:25

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

 
Nahoru Odpovědět
23.12.2013 9:25
Avatar
Kit
Tvůrce
Avatar
Odpovídá na
Kit:23.12.2013 9:33

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
Odpovídá na
Neaktivní uživatel:23.12.2013 9:38

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
23.12.2013 9:38
Neaktivní uživatelský účet
Avatar
Matúš Petrofčík:23.12.2013 9:52

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
Odpovídá na Matúš Petrofčík
Neaktivní uživatel:23.12.2013 9:53

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
Neaktivní uživatelský účet
Avatar
Odpovídá na Neaktivní uživatel
Matúš Petrofčík:23.12.2013 9:56

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
Odpovídá na Matúš Petrofčík
Neaktivní uživatel:23.12.2013 10:08

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

Nahoru Odpovědět
23.12.2013 10:08
Neaktivní uživatelský účet
Avatar
Matúš Petrofčík:23.12.2013 10:44

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
Tvůrce
Avatar
Odpovídá na Matúš Petrofčík
Kit:23.12.2013 11:51

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
23.12.2013 11:51
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Uživatel sítě :23.12.2013 14:35

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
23.12.2013 14:35
Chybami se člověk učí, běžte se učit jinam!
Avatar
Odpovídá na Matúš Petrofčík
Neaktivní uživatel:25.12.2013 9:51

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
Neaktivní uživatelský účet
Avatar
Matúš Petrofčík:25.12.2013 9:54

[me|]270[/me|­],Neaktivní uživatel,[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_:25.12.2013 22:34

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
Tvůrce
Avatar
Odpovídá na Xin_
Kit:25.12.2013 22:38

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_:25.12.2013 22:44

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
Tvůrce
Avatar
Odpovídá na Xin_
Kit:25.12.2013 22:46

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_:25.12.2013 22:49

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
Tvůrce
Avatar
Odpovídá na Xin_
Kit:25.12.2013 22:55

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_:25.12.2013 23:01

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_:25.12.2013 23:01

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
Tvůrce
Avatar
Odpovídá na Kit
mkub:25.12.2013 23:03

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
Tvůrce
Avatar
Odpovídá na Xin_
Kit:25.12.2013 23:04

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_:25.12.2013 23:06

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
Tvůrce
Avatar
Odpovídá na mkub
Kit:25.12.2013 23:07

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

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

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_:25.12.2013 23:09

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_:25.12.2013 23:10

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
Tvůrce
Avatar
Odpovídá na Xin_
Kit:25.12.2013 23:19

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_:25.12.2013 23:22

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

Nahoru Odpovědět
25.12.2013 23:22
Zvědavost nás žene vpřed :)
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Xin_
Kit:25.12.2013 23:25

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

Nahoru Odpovědět
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_:25.12.2013 23:27

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
25.12.2013 23:27
Zvědavost nás žene vpřed :)
Avatar
Kit
Tvůrce
Avatar
Odpovídá na Xin_
Kit:25.12.2013 23:30

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
Tvůrce
Avatar
Odpovídá na Xin_
Kit:25.12.2013 23:42

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_:26.12.2013 10:28

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
Tvůrce
Avatar
Odpovídá na Xin_
Kit:26.12.2013 10:47

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 Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:26.12.2013 11:07

"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
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:26.12.2013 11:19

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 Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:26.12.2013 11:29

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
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:26.12.2013 11:37
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
26.12.2013 11:37
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:26.12.2013 11:41

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 Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:26.12.2013 11:42

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
You are the greatest project you will ever work on.
Avatar
Kit
Tvůrce
Avatar
Odpovídá na David Hartinger
Kit:26.12.2013 11:51

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 Hartinger
Vlastník
Avatar
Odpovídá na Kit
David Hartinger:26.12.2013 11:59

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
You are the greatest project you will ever work on.
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.