Refresh - načítání z DB – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama

Refresh - načítání z DB – JavaScript, AJAX, jQuery – Fórum – Programujte.comRefresh - načítání z DB – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 
Hledat
Moderní platforma pro vytvoření vašeho nového webu – Wix.com.
Nyní už můžete mít web zdarma.
Vybavení pro Laser Game
Spuštěn Filmový magazín
Laser Game Brno

Poohlížíte se po nové práci? UX Designer for mobile app Práce za rohem
RePRO0
Super člen
12. 8. 2011   #1
-
0
-

Zdravím,

vypisuji údaje z DB. Problém je, pokud už mám hodně výpisů vypsaných, tak to zpomaluje jako prase. Potřebuju poradit, aby to vždy vypsalo jen poslední ID (to co je nového -- aby to nevypisovalo to, co už jsem viděl). A zbytek nějak hešovat. Rychlost je rychlost... 

Snad mě chápete. Pokud ano, pište kódy (samples) + užitečné links. A beru i rady (ale hodně užitečné). 

Díky, RePRO.

Nahlásit jako SPAM
IP: 95.82.164.–
Software: C; C++; C#; Pascal; Delphi; Java Webdesign: PHP; MySQL; CSS; jQuery; Ajax; Javascript; OOP
Curo
~ Šéfredaktor
+8
Hero
12. 8. 2011   #2
-
0
-

#1 RePRO
Asi jsem moc dobře nepostřehl problém - pokud chceš vypsat jen poslední (nová) data, tak je vypiš např. dle timestampu poslední návštěvy, ne?

Možná bych mohl poradit více, ale nemůžu vyšpekulovat problém, který tě trápí :-).

Nahlásit jako SPAM
IP: 109.164.4.–
Guitar Hero Master, Project führer & zdejší čaroděj.
Sleduj mě na twitteru – @lukaschury.
RePRO0
Super člen
12. 8. 2011   #3
-
0
-

#2 Curo
Čau čau. :-) Jinak chválím za tento web - skvěle dynamickej... Nějaký spešl framework? ;-)

Mám klasický chat, kde mám na zdi nějaké texty a pořád je přidávám. Zeď se mi každé 4 sekundy refreshuje. To znamená, že se mi to pořád načítá z DB a dost to zpomaluje...

A to, co se mi refreshlo už nepotřebuji znovu načítat z databáze... Chápeš mě? Chci jen to nové načítat (last ID) aby to nezpomalovalo. ;-)

Nahlásit jako SPAM
IP: 95.82.164.–
Software: C; C++; C#; Pascal; Delphi; Java Webdesign: PHP; MySQL; CSS; jQuery; Ajax; Javascript; OOP
Curo
~ Šéfredaktor
+8
Hero
12. 8. 2011   #4
-
0
-

#3 RePRO
Díky  . Vše dělnická práce! :-)

Tak možností je několik:

  • do databáze (nebo cookies) na každý refresh uložíš ID posledního příspěvku, při refreshi vytáhneš pouze příspěvky vyšší jak toto ID
  • pokud refreshuješ pomocí JS, jakože asi jo, pak můžeš předávar dotazu (do DB) datum, kdy vybereš příspěvky s datem vyšší, než poslané datum. A při vykreslování těchto příspěvků z DB rovnou vyplivneš i aktuální datum, které se zase pošle za další 4 s... (a tím vykreslí ty za poslední 4s)
  • obě metody však vrátí nulový počet výsledků, pokud za dané 4s nebylo nic vloženo

Osobně bych asi vždy vytahoval X posledních příspěvků a je, tak i klasický chat vždy funguje... Metody výše zmíněné bych použil pro signalizaci, který příspěvek je nový od posledního refreshe.

Nahlásit jako SPAM
IP: 109.164.4.–
Guitar Hero Master, Project führer & zdejší čaroděj.
Sleduj mě na twitteru – @lukaschury.
RePRO0
Super člen
12. 8. 2011   #5
-
0
-

Vlastní tvorba? Tak to obdivuji. Dost se mi to líbí (včetně grafiky - jak to děláš? :D) a muselo to dát plno práce. Na druhou stranu pokud člověk umí skvěle použít jQuery (jedinečná knihovna) - je všechno tak jednoduché... Pár řádků kódů a ta funkčnost (dynamičnost) včetně zabezpečení. 

Chápu to -- jak to myslíš, že při každém refreshi budu vytahovat jenom příspěvky, které mají třeba isSee = 0. Ale co s těma ostatníma? Já chci vidět i ty ostatní, kde máš isSee = 1. Ale nechci je tahat z DB... v tom je problém.

BTW: Jak si mi napsal, zkusil jsem tedy LIMIT, a pomáhá to samozřejmě... ale ještě bych to rád optimalizoval tou metodou výše. Když to nepůjde - nepůjde.

Jenže teď jsem si vzpomněl, texty jsou texty - tam dáš třeba LIMIT 10 a jsi v cajku, ale co výpis online users? Tam je nemůžeš zkrouhnout limitem - vždy musíš vypsat všechny online usery. Tam pak je na místě ta metoda.

Díky.

Nahlásit jako SPAM
IP: 95.82.185.–
Software: C; C++; C#; Pascal; Delphi; Java Webdesign: PHP; MySQL; CSS; jQuery; Ajax; Javascript; OOP
Curo
~ Šéfredaktor
+8
Hero
12. 8. 2011   #6
-
0
-

#5 RePRO
Máme skvělý redakční tým, s ním je vše jednoduché :-).

Pokud chceš vypsat online uživatele, tak pokud na to nemáš spešl tabulku, tak vyber autory příspěvků např. za posledních 10 minut a ty označ za online. Dotazem by to vypadalo "vyber vše from příspěvky datum<(now()-10min)" + odstranění duplicit (GROUP BY ... HAVING COUNT(*)>1).

Tak pokud chceš ty viděné příspěvky uchovávat lokálně, pak moc možností asi nemáš. Do cookies to dávat je nesmysl, takže jedině storage v prohlížeči. Tím docílíš znovuvypsání již viděných příspěvků i po refreshi.

No a pokud chceš mít stránku a tam mít zobrazené viděné přísěvky jen do doby refreshe stránky (kdy se načte vše znovu), pak musíš data tahat ajaxem:

  • uživatel přijde na stránku, kde se mu vypíšou poslední příspěvky, třeba posledních 20
  • po načtení stránky (layoutu) v události onload zavoláš f-ci vykresli()
  • f-ce vykresli() bude volat druhou f-ci zavolej() která bude volána (první funkcí) každých 10s (pomocí SetInterval()
  • no a funkce zavolej() se bude dotazovat na DB na nové příspěvky (novější než poslední vypsaný příspěvek) a pokud nějaký je, přidej ho na začátek již vypsaných příspěvků (jQuery -> prepend)

Vypadá to složitě, ale v zásadě jen každých 10 s zavoláš nad DB dotaz na nové příspěvky, které přidáš... :-)

Nahlásit jako SPAM
IP: 109.164.4.–
Guitar Hero Master, Project führer & zdejší čaroděj.
Sleduj mě na twitteru – @lukaschury.
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 6 hostů

Podobná vlákna

FF - refresh — založil bbtrash

REFRESH V FF — založil leon

Refresh v iframe — založil nerew

Refresh stranky — založil Gadael

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032019 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý