Diskuze: PHP MYSQL fronta příkazů
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 10 zpráv z 10.
K personalizaci obsahu a reklam, poskytování funkcí sociálních médií a analýze naší návštěvnosti využíváme soubory cookie. Informace o tom, jak náš web používáte, sdílíme se svými partnery pro sociální média, inzerci a analýzy. Partneři tyto údaje mohou zkombinovat s dalšími informacemi, které jste jim poskytli nebo které získali v důsledku toho, že používáte jejich služby.
Používáme nezbytné cookies pro fungování webu a s tvým souhlasem také analytické a marketingové cookies.
Zajišťují základní funkce, bezpečnost a služby, které sis vyžádal. Nelze je vypnout.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| ITnetwork | ITnetwork | Provoz webu, relace, přihlášení a uložení nastavení cookies. | PHPSESSID, auth_token, sid, itn_consent_impression, __Host-itn_consent | Relace až 1 rok |
| Google Tag Manager | Správa značek a načítání měřicích nástrojů webu. | Žádné | Neukládá se | |
| Google Fonts | Načítání typografie webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google Hosted Libraries | Načítání potřebných knihoven a stylů webu. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele | |
| Google reCAPTCHA | Ochrana formulářů a webu před zneužitím. | _GRECAPTCHA, rc::a, rc::b, rc::c, rc::f | Relace až 180 dní | |
| YouTube | Přehrávání vloženého video obsahu. | localStorage, IndexedDB; cookies after playback interaction | Relace až trvalé úložiště | |
| Vimeo | Vimeo | Přehrávání vloženého video obsahu. | __cf_bm, _cfuvid, vuid, localStorage, IndexedDB | Relace až 2 roky |
| Facebook Login | Meta | Přihlášení pomocí účtu třetí strany. | Úložiště řízené poskytovatelem | Relace až 1 rok |
| GoPay | GoPay | Zpracování uživatelem vyžádané platby. | Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
Pomáhají nám porozumět používání webu a zlepšovat ho.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Analytics 4 | Měření návštěvnosti a používání webu. | _ga, _ga_* | Až 2 roky | |
| Microsoft Clarity | Microsoft | Měření návštěvnosti a používání webu. | _clck, _clsk, _cltk | Relace až 1 rok |
Slouží k měření kampaní, personalizaci reklamy a marketingové komunikaci.
| Služba | Poskytovatel | Účel | Cookies a úložiště | Doba uložení |
|---|---|---|---|---|
| Google Ads | Měření kampaní, reklama a remarketing. | _gcl_au, _gcl_ls | Relace až 90 dní | |
| Meta Pixel | Meta | Měření kampaní, reklama a remarketing. | _fbp, _fbc, localStorage | Až 90 dní |
| Sklik | Seznam.cz | Měření kampaní, reklama a remarketing. | retargeting, sid, szn:* | Relace až trvalé úložiště |
| LinkedIn Insight | Měření kampaní, reklama a remarketing. | bcookie, li_gc, lidc, __cf_bm | Relace až 1 rok | |
| Ecomail | Ecomail.cz | Měření kampaní, reklama a remarketing. | ecmid, Úložiště řízené poskytovatelem | Dle podmínek poskytovatele |
| Atribuce kampaní ITnetwork | ITnetwork | Přiřazení návštěvy a objednávky ke kampani. | campaign_clid[*], user_session_context | Až 1 rok |
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Ahoj, zrovna třeba na stavění budov jde udělat takový malý trik, a to
ten, že si uložíš datum začátku stavby, počet sekund (nebo jiný
interval), jak dlouho se budova staví, a když klikneš na stránce na něco,
tak se jen zjistí, zda "začátek stavby + počet sekund < aktuální čas"
- pokud ano, pak se stavba dokončí. Tedy reálně se dokončení stavby v
databázi neprovede přesně těch 10 minut po začátku, ale kdykoliv po 10
minutách, kdy si tu stránku zobrazíš.
Je někdy samozřejmě problém v tom, že když např. budova něco produkuje,
tak je potřeba ještě od aktuálního času odečíst čas dokončení stavby,
a ten rozdílný čas rovnou použít k produkci
Na příkladu:
Stavíš budovu, která ti generuje obilí. Za každou 1 hodinu se ti
vygeneruje 100 obilí.
Budovu začneš stavět ve 20:00, trvá 1 hodinu (tedy do 21:00). Na stránku
přijdeš ale až ve 23:00. V ten moment se zjistí, že datum dokončení
stavby je nižší než aktuální čas, takže se provede dokončení stavby.
Navíc ale 23 - 21 = 2 hodiny navíc, tedy je zároveň potřeba vygenerovat 2 *
100 obilí 
Ještě navíc může vzniknout problém, že když ta konkrétní budova nějak souvisí i s jinými hráči, třeba že si stavíš nějakou další úroveň opevnění a nějaký hráč na tebe chce zaútočit, tak se ta kontrola dokončení stavby musí provést i před tím samotným útokem - tedy ani nemusíš být online ty, ale stačí, aby na tebe někdo provedl útok. Takže to někdy může být trochu složitější, ale stále si myslím, že je to obvykle lepší řešení (pro ušetření náročnosti aplikace), než každých 5 minut pouštět nějaký CRON a kontrolovat všechny možné záznamy.
no tento system me taky napadl. zapsat cas zacatku a cas konce a pri dalším
přihlášení to zkontrolovat. ale nebude právě fungovat ta "návštěva"
jiného hráče, když by třeba útočil.
CRON -- neznám , prozkoumám, třeba to bude to správné nakopnutí,
díky.
Proč by nefungovala? Pokud mám nějakou interakci s jiným hráčem, musím znát jeho unikátní identifikátor (obvykle ID). Tedy před tím, než se provede útok, tak dokončím stavbu toho hráče, na kterého chci zaútočit.
no ale nejak nevim kdyz bych treba stavel armadu. dam frontu 100 vojacku,
behem doby "budovani" me napadne protihrac... udelal bych si tabulku fronta kde
budu mit zacatek vystavby a konec.
protihrac prijde ke me, a zase jsme tam kde na zacatku, co kdyz se behem utoku
odhlasi?
me ta mproste chybi nejakej realtime prvek, kterej to vsechno ridi a
kontroluje.
V případě útoku zapíšeš do databáze čas začátku a trvání. Poté co se hráč který vyslal útok vrátí tak dopočítáš zda ve chvíli kdy armáda dorazila k cíli byla dána budova (třeba věž) postavena a podle toho vypočítáš zda byl útok úspěšný a přičteš kořist.
takze budu mit neco jako verejnou tabulku kam se budou zapisovat vsechny
cekaci akce. kdyz hrac prijde na navstevu k nekomu jinymu, projedu databazi,
podle ID hrace najdu "co stavi" , spocitam rozdil a pak udelam utok?
musim se and tim zamyslet vic, asi to neni tak jednoduchy. zkusim projit
zdrojove kody travianu i kdyz to je asi moc slozity, treba to pochopim
Ještě bych zmínil způsob, kdy stavba má pevně stanovené datum "platnosti". Pokud hráč začne stavět něco, co má být dokončeno za 10 minut, platnost se nastaví na getDate()+10min. Při návštěvě/útoku se zjišťuje, které stavby mají platnost menší než getDate().
Jednoduché.. -> Dejme tomu že zadáš stavbu hlavní budovy v 11:00
(délka stavby je 5min). Do $délkastavby = GetDate() + $dobastavby;
Odešleš do databáze konec stavby a při dalším obnovení nebo kliknutí na
cokoli, se zeptáš zda zapsané v dat tj. $konecstavby <= GetDate(); nebo
taky 11:05 <= aktuálníčas (tzn. že v 11:05:01 podmínka pustí kladnou
větev).
Pokud to takto není, tak mne opravte.
Kdyžtak mě napiš na FB, poradím s čímkoli kolem PHP.
Zobrazeno 10 zpráv z 10.
