« 1 2 »
Autor Zpráva
G3n3sis19
Profil
Chtěl bych vědět, kolik by měl být počet dotazů na optimalizované browser hře při pohledu na vesnici, (SQL) s výpočtem surovin, kontroly nových SZ, hlášení, jednotek (i nově vytrénovaných), zápisem do access logu který je v DB? Vytvářím vlastní online hru (nejsem začátečník, sice umím php čtvrt roku ale amatér nejsem), ale obávám se že to prostě normální virtuál nebude zvládat. Kolik si myslíte (vím, že se to nedá srovnávat ale chtěl bych vědět vaše názory), že má dotazů známá online hra začínající na Tra... ? (nevím, proč je tam cenzura)

Až se dozvím nějaké odpovědi, řeknu Vám kolik mám já dotazů, aby jste nemysleli na žádný extra čísla. Tak díky za odpovědi
pcmanik
Profil
Zhodou nahod robim tiez jednu hru, aj ked trocha komplexnejsiu. Tych dotazov nieje treba vela, mne osobne staci dobre spraveny ktory berie suroviny a stav pri kazdom nacitani stranky resp. sa vyuziva cache. A potom vacsinou len jeden na kazdej includovanej stranke.
G3n3sis19
Profil
mohl by si mi to ukázat (dát skype)?
dan55
Profil
Také na jedné pracuji,
přesný počet SQL nevím, ale je jich hodně, běží to na VPS a neočekávám tisíce lidí.
Suroviny aktulizuji ajaxem každých 8 sekund, útoky taktéž ajaxem každých 30 sekund.
SZ po každém refreshu.
Mapa - 1 zdvojený dotaz (políčko a natáhnutí dat o uživateli).
Po přihlášení se do $_SESSION načtou veškeré informace o uživateli, abych to nemusel všechno tahat.
G3n3sis19
Profil
odkaz by nebyl? Nebo si mě přidejte na skype, oba "martin.foltyn"
1Pupik1989
Profil
Já mám jeden na kompletní informace o vesnici (suroviny, název, vojsko, majitel), v hlavní budově jeden na stavbu a jeden na mapě. Běží to jak má a načítá se vše pouze jednou při na čtení stránky :)
G3n3sis19
Profil
Tak to nechápu, jak je to možné

EDIT: smazáno číslo ICQ, znám jak si mě radi přidávají rusáci
Darker
Profil
Na diskusi obecně platí, že co se tu řešit začne, mělo by se tu i dořešit. Proto diskuse nemá PM.
G3n3sis19
Profil
To bylo jen z důvodu odkazů. JAk je tedy možný strčit tolik kontrol do 1-2 dotazů?
Na select uživatele jako takového (email, username,id, gamecoiny,atd...) mám v jedné tabulce, tam to selectnu jednou a dálo to mám v SESSION
Další je vesnice. tam mám vojáky, suroviny, jméno vesnice, id vesnice. To jsou 2 dotazy. A jak se kontroluje příchozí PM? To už není možný do 2 dotazů dostrkat pokud (nemám to rád) není v dotazu dalších několik joinů
1Pupik1989
Profil
Dotazů tam je samozřejmě víc (inbox, oznámení, zjištění nových příspěvků na fóru, jednotky atd.) Já vybírám třeba tři tabulky najednou podle ID hráče v Session a vypíšu. Seznam vesnic se načítá jen na jedné stránce, takže to ten jeden příkaz navíc přežije. Zkrátka se to napíše a pak jen ladí a ladí a ladí. Nikdy se to však pořádně nevyladí a to je ta krása. S každým laděním většinou přijde další bota :D
G3n3sis19
Profil
A mohl by si mi říct tedy počet těch dotazů když počítáš všechno to okolo ?
popř. vypsat je? Já mám toto
13Array ( [0] => SELECT id,username,capital_id,GC,access FROM users WHERE cookie_id = '' 
[1] => SELECT vid, wood, iron, clay, crop, u1,u2,u3,u4,u5,u6,u7,u8,u9,u10,u11,u12,u13,f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12 FROM villagedata WHERE owner_id = '1' AND capital = '1' LIMIT 1 
[2] => SELECT id, bid,timestamp,completetime FROM buildingdata WHERE vid = '4802' 
[3] => SELECT id,uid,amount,lastupdate,completetime FROM trainingdata WHERE vid = '4802' ORDER BY completetime asc 
[4] => SELECT id FROM attacks WHERE (endtime-1299954482<1 and proc = 0) and (vid = 4802 or `to` = 4802) LIMIT 1 
[5] => SELECT count(id) FROM reportdata WHERE (uid_attacker = '1' or uid_defender = '1') and `read` = '0' 
[6] => SELECT count(id) FROM privatemessages WHERE `to` = '1,G3n3s!s' and `read` = '0' 
[7] => SELECT count(id) FROM log_access WHERE 1299954482 - time <30 AND uid = '1'; 
[8] => UPDATE users SET timestamp = 1299954482 WHERE id = '1' 
[9] => INSERT INTO log_access (`id`, `uid`, `request_uri`, `http_referer`, `ip`, `time`) VALUES ('', '1', '/rok/game.php', '/', 'MOJEIP', '1299954482'); 
[10] => SELECT `id`,`image`,`clicks`,`max_clicks`,`max_views`,`views` FROM adverts WHERE `active`=1 
[11] => SELECT * FROM bans WHERE (ip = 'MOJEIP' or username = 'G3n3s!s') and expired='0' LIMIT 1 
[12] => SELECT * FROM attacks WHERE (`to` = 4802 or vid = 4802) and proc=0 ) 
1Pupik1989
Profil
Tak to asi nikdy nespočítám. 10 jich je na 100%. Zkusim někdy spočítat, ale asi to bude honička, jelikož je to spoustu stran a na každé může být něco jiného. Jen ty globální mám ve speciální stránce. Pro spousty ještě sahám AJAXem atd.
G3n3sis19
Profil
ajaxem - například?
děláš to v OOP?

mám funkci přímo pro query -
  function query($query)
        {
                global $security, $queries_count,$queries_list;
                $do_query = $security->clear_text($query);
                 $result = mysql_query($do_query) or die("Chybicka se vloudila ..<br>v pĹ^ŮĂ­kazu: $do_query<br><br><b>".mysql_error()."</b>");
                        $queries_count++;
                        $this->queries_list[] = $do_query;
 
                }
                return $result;
        }
a potom si to už jen print_r(); vypíšu
1Pupik1989
Profil
ajaxem třeba vybírám z databáze aktuální chat a odesílám i příspěvky do db
G3n3sis19
Profil
a mohl by si mi napsat url dema/stránky kde se na to můžu podívat? Zní to velice dobře s hodně funkcemi :)
Nevadí mi že to není hotové, třeba ti pak na revange dám svůj
1Pupik1989
Profil
Ajax

To je ono, demo ukázat nemůžu, běží mi to na localu a nechce se mi to celé kopírovat.
G3n3sis19
Profil
já myslel jako celkově funkce, chat, forum atd. Ani starší verze nikde není ke vzhlédnutí ?
1Pupik1989
Profil
http://orbius.707.cz/satanian/hra.php?zobraz=mapa

Není to ale final, jen první pokus. Navíc to je jen mapa přes ajax. Promiň, že to není v bb-kodu, píšu z mobilu.
G3n3sis19
Profil
°vůbec nevadí. Je to dobrý :)
Tipuju že open source to není ;)
Kolik máš na takovýhle pole mapy dotazů? 2 ? 1 ?
1Pupik1989
Profil
jeden a dvě podmínky na osu X a dvě na osu Y. Vypisuju ji samozřejmě z db od bodu X do X+rozmer_mapy. To samé s Y

open source to není :D
G3n3sis19
Profil
mohl by si mi zkopírovat ten dotaz? Já to mám co řádek to dotaz :(
1Pupik1989
Profil
podle toho jak to máš uložené v sql. Já mám zvlášť x a y.

Důležitý je

x>=$x and x<=$max_x

A to samé s Y
G3n3sis19
Profil
x,y,id,occupied,img, zjistim si střed a v cyklu

   [12] =&gt; SELECT capital_y, capital_x FROM users WHERE id = 1
    [13] =&gt; SELECT * FROM mapdata WHERE   y = 	-8 and x = -1 or y = 	-8 and x = 0 or y = 	-8 and x = 1 or y = 	-8 and x = 2 or y = 	-8 and x = 3 or y = 	-8 and x = 4 or y = 	-8 and x = 5 or y = 	-8 and x = 6 or y = 	-8 and x = 7 or y = 	-8 and x = 8 or y = 	-8 and x = 9 order by x asc,y asc 
    [14] =&gt; SELECT * FROM mapdata WHERE   y = 	-7 and x = -1 or y = 	-7 and x = 0 or y = 	-7 and x = 1 or y = 	-7 and x = 2 or y = 	-7 and x = 3 or y = 	-7 and x = 4 or y = 	-7 and x = 5 or y = 	-7 and x = 6 or y = 	-7 and x = 7 or y = 	-7 and x = 8 or y = 	-7 and x = 9 order by x asc,y asc 
    [15] =&gt; SELECT * FROM mapdata WHERE   y = 	-6 and x = -1 or y = 	-6 and x = 0 or y = 	-6 and x = 1 or y = 	-6 and x = 2 or y = 	-6 and x = 3 or y = 	-6 and x = 4 or y = 	-6 and x = 5 or y = 	-6 and x = 6 or y = 	-6 and x = 7 or y = 	-6 and x = 8 or y = 	-6 and x = 9 order by x asc,y asc 
    [16] =&gt; SELECT * FROM mapdata WHERE   y = 	-5 and x = -1 or y = 	-5 and x = 0 or y = 	-5 and x = 1 or y = 	-5 and x = 2 or y = 	-5 and x = 3 or y = 	-5 and x = 4 or y = 	-5 and x = 5 or y = 	-5 and x = 6 or y = 	-5 and x = 7 or y = 	-5 and x = 8 or y = 	-5 and x = 9 order by x asc,y asc 
    [17] =&gt; SELECT * FROM mapdata WHERE   y = 	-4 and x = -1 or y = 	-4 and x = 0 or y = 	-4 and x = 1 or y = 	-4 and x = 2 or y = 	-4 and x = 3 or y = 	-4 and x = 4 or y = 	-4 and x = 5 or y = 	-4 and x = 6 or y = 	-4 and x = 7 or y = 	-4 and x = 8 or y = 	-4 and x = 9 order by x asc,y asc 
    [18] =&gt; SELECT * FROM mapdata WHERE   y = 	-3 and x = -1 or y = 	-3 and x = 0 or y = 	-3 and x = 1 or y = 	-3 and x = 2 or y = 	-3 and x = 3 or y = 	-3 and x = 4 or y = 	-3 and x = 5 or y = 	-3 and x = 6 or y = 	-3 and x = 7 or y = 	-3 and x = 8 or y = 	-3 and x = 9 order by x asc,y asc 
    [19] =&gt; SELECT * FROM mapdata WHERE   y = 	-2 and x = -1 or y = 	-2 and x = 0 or y = 	-2 and x = 1 or y = 	-2 and x = 2 or y = 	-2 and x = 3 or y = 	-2 and x = 4 or y = 	-2 and x = 5 or y = 	-2 and x = 6 or y = 	-2 and x = 7 or y = 	-2 and x = 8 or y = 	-2 and x = 9 order by x asc,y asc 
    [20] =&gt; SELECT * FROM mapdata WHERE   y = 	-1 and x = -1 or y = 	-1 and x = 0 or y = 	-1 and x = 1 or y = 	-1 and x = 2 or y = 	-1 and x = 3 or y = 	-1 and x = 4 or y = 	-1 and x = 5 or y = 	-1 and x = 6 or y = 	-1 and x = 7 or y = 	-1 and x = 8 or y = 	-1 and x = 9 order by x asc,y asc 
    [21] =&gt; SELECT * FROM mapdata WHERE   y = 	0 and x = -1 or y = 	0 and x = 0 or y = 	0 and x = 1 or y = 	0 and x = 2 or y = 	0 and x = 3 or y = 	0 and x = 4 or y = 	0 and x = 5 or y = 	0 and x = 6 or y = 	0 and x = 7 or y = 	0 and x = 8 or y = 	0 and x = 9 order by x asc,y asc 
    [22] =&gt; SELECT * FROM mapdata WHERE   y = 	1 and x = -1 or y = 	1 and x = 0 or y = 	1 and x = 1 or y = 	1 and x = 2 or y = 	1 and x = 3 or y = 	1 and x = 4 or y = 	1 and x = 5 or y = 	1 and x = 6 or y = 	1 and x = 7 or y = 	1 and x = 8 or y = 	1 and x = 9 order by x asc,y asc 
    [23] =&gt; SELECT * FROM mapdata WHERE   y = 	2 and x = -1 or y = 	2 and x = 0 or y = 	2 and x = 1 or y = 	2 and x = 2 or y = 	2 and x = 3 or y = 	2 and x = 4 or y = 	2 and x = 5 or y = 	2 and x = 6 or y = 	2 and x = 7 or y = 	2 and x = 8 or y = 	2 and x = 9 order by x asc,y asc 
1Pupik1989
Profil
já zjišťuju střed akorát z inputů na souřadnice. Při posuvu to není potřeba.

Jinak si data z databáze zapiš do pole a pak při vnořených cyklech akorát zjistíš, jestli pole existuje. Takhle to dělám teda já.
G3n3sis19
Profil
proč mám kontrolovat, jestli pole existuje ?
1Pupik1989
Profil
no podle mě je to třeba rychlejší, než dotaz do databáze. Asi to je můj zlozvyk.
G3n3sis19
Profil
Stále to asi nechápu. To si mám natáhnout celou mapu do arraye a po posouvání to brát z toho? NEbo jsem nepochopil podstatu toho, proč mám co kontrolovat a odkud-
1Pupik1989
Profil
Ne, já si vyberu pole, které jsou v rozmezí souřadnic mapy a uložím je do pole. Pak už jen kontroluji, zda-li záznam v poli se souřadnicemi existuje. Samozřejmě to můžeš udělat jak chceš, tohle je pouze má vize.
G3n3sis19
Profil
jo takhle! Takže vlastně šetříš dotazy. To znamená, že když se posuneš o jedno políčko, ty co už máš v poli nepotřebuješ znovu natahovat, že ?

Mohl by si mi ukázat jak to kontroluješ, nebo mi ukázat kod té mapy? Dík
1Pupik1989
Profil
Ne, načítá se to celé znova, ale jedním kódem vytáhnu celou mapu. Kdybych vytáhl větší kus, tak prakticky pohyb bez načítání by šel. Mě to do pole načítá Typ vesnice, souřadnice vesnice, speciální bonus vesnice, majitele vesnice atd. Na mapě 15x15 je těch vesnic (včetně lesa) asi 30 a všechny se načtou jedním SQL dotazem.
« 1 2 »

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: