« 1 2
Autor Zpráva
_es
Profil
Prečo posielaš dva sieťové dotazy? Stačí ti predsa jeden PHP skript, ktorý vráti to, čo novinky.php aj čo blok.php. Pozri si, aký je rozdiel medzi setInterval a setTimeout.
juriad
Profil
V tvém kódu nemusíš psát žádný středník (v JS jsou volitelné), existují však situace, kdy ho musíš napsat, abys zabránil chybné interpretaci.
Piš středník vždy.

function a() {alert('1')}

a() // sem přidej středník
(function(){alert('2')})()
Trošku zajímavější příklad: http://kod.djpw.cz/zuib


Ten setTimeout máš stále na špatném místě. Měl by být uvnitř getResult.
jakre
Profil
_es:
Pozri si, aký je rozdiel medzi setInterval a setTimeout
Psal si mi, že jsem nevnořil funkci setTimeout a teď tu píšeš, abych si o tom přečetl...

Stačí ti predsa jeden PHP skript, ktorý vráti to, čo novinky.php aj čo blok.php
Jedno jde do jednoho ID, druhé do druhého.


juriad:
Měl by být uvnitř getResult.
Takto?

jQuery().ready(function (){
      getResult(setTimeout,5000);
  });
// pokračování...


Nebo takto?

// ...
function getResult() {
   setTimeout(getResult,5000);
   jQuery.post("novinky.php", function(data) {
    jQuery("#novinky").html(data);
  });
  
   jQuery.post("blok.php", function(data) {
   // tady už seTimeout asi nebude
    jQuery("#blok").html(data);
  });
}
_es
Profil
jakre:
Jedno jde do jednoho ID, druhé do druhého.
To predsa nie je dôvod, aby to nemohol vracať len jeden serverový skript. Ak by tam bolo 100 elementov, tak na to vytvoríš 100 serverových skriptov a každých pár sekúnd bude prehliadač vysielať 100 sieťových dotazov?
juriad
Profil
To druhé, samozřejmě.
Kdykoli se zavolá getResult, jako první se naplánuje jeho spuštění za 5 sekund a následně se provedou requesty na server a výměna obsahu.
_es
Profil
[#5] juriad:
To predsa pripomienku v Auto-refresh u src"..." vôbec nerieši: Str4wberry: „Možná bych spíš použil setTimeout, který by se volal vždy až při získání dat.
jakre
Profil
Reaguji juriada:
V tom případě vypadá kód takhle:

jQuery().ready(function (){
      getResult();
  });

   function getResult() {
   setTimeout(getResult,5000);
   jQuery.post("novinky.php", function(data) {
    jQuery("#novinky").html(data);
  });
  
   jQuery.post("blok.php", function(data) {
    jQuery("#blok").html(data);
  });
}


_es:
To predsa nie je dôvod, aby to nemohol vracať len jeden serverový skript.
Jsou rozdíly v zatížení serveru jedním nebo dvěma scripty tak markantní?
_es
Profil
[#7] jakre:
Až na to, že to Str4wberryho pripomienku vôbec nerieši.
jakre
Profil
_es:
až při získání dat
Která to je tedy část scriptu?
juriad
Profil
_es:
Má smysl to řešit? Pokud jakre navrhne něco jako getResult(setTimeout,5000);, tak je zřejmé, že skombinování několika dotazů do jednoho je na něj příliš.
A navíc, co když request neprojde, tak už se nikdy nenaplánuje refresh? To by se musel přidat nějaký timeout k requestu a začíná se to opravdu komplikovat.
jakre
Profil
Reaguji na juriada:
skombinování několika dotazů do jednoho je na něj příliš.
Od toho jsem založil tohle téma a vedeme zde diskuzi.
_es
Profil
jakre:
Která to je tedy část scriptu?
Ak by si mal na to len jeden serverový skript, tak by bola tá „časť skriptu“ jedna. V tvojm prípade (kód v [#7]) časti tesne za ....html(data);.
Prerobil by som to na:
function getResult() {
  var t = setTimeout(getResult, 30000);
  jQuery.post("vystup.php", function(data) {
    clearTimeout(t);
    /* spracovanie dát */
    setTimeout(getResult, 5000);
  });
}
Pričom vystup.php by vrátil všetko potrebné a číslo 30000 (30 s) by sa zvolilo tak, aby sa v prípade nejakej chyby obnovilo opätovné načítavanie a súčasne by bolo málo pravdepodobné, že by trval dotaz dlhšie.
jakre
Profil
_es:
Ten kód psaný výše je celý? Stačí tedy, když ho použiji a soubory sjednotím a uložím jako vystup.php?
_es
Profil
[#13] jakre:
Časť „spracovanie dát“ si už musíš dorobiť. Výstupy z pôvodných PHP skriptov zjednotíš v PHP tak, aby si ich potom vedel v JS spracovať.
jakre
Profil
_es:
Už v odpovědi číslo [#7], jsem se tě ptal, zda-li to má vůbec nějaký smysl to sjednotit:

„To predsa nie je dôvod, aby to nemohol vracať len jeden serverový skript.“
Jsou rozdíly v zatížení serveru jedním nebo dvěma scripty tak markantní?
_es
Profil
[#15] jakre:
Tak zmenšenie frekvencie sieťových dotazov na polovicu je asi „markantné“ dosť. Ak budeš chcieť prenášať zo serveru ďalšie informácie v 5 s intervaloch tak na ne vyrobíš ďalšie PHP skripty a zahltíš sieť ďalšími dotazmi?
jakre
Profil
_es:
vyrobíš ďalšie PHP skripty a zahltíš sieť ďalšími dotazmi
Pokud je to tak markantní rozdíl, tak ano, protože jsem nepochopil odpověď číslo [#12]...

Když zkouším test rychlosti webu, dostanu, že nejdelší je zpracování stránky blok.php.
V tomto souboru je však zatím pouze prostý text a přesto se čeká přes 1 sekundu. Zde je výsledek testu rychlosti.
Fisir
Profil
Reaguji na jakre:
Jsou rozdíly v zatížení serveru jedním nebo dvěma scripty tak markantní?
V zatížení serveru možná ne, ale klienta ano. Nezapomínej, že existují mnohem horší podmínky připojení, než to, co máš doma. Existují totiž třeba WiFiny ve vlacích nebo školách, které jsou permanentně přetížené a jenom navázání spojení se serverem může trvat deset sekund. A jestli budu na výsledek čekat tři čtvrtě minuty, nebo minutu a půl, to už je sakra rozdíl a může to i definovat, zda na tvé stránce zůstanu. Pokud je to tedy relativně snadno proveditelné, posílej jenom jeden požadavek.
jakre
Profil
Fisir:
posílej jenom jeden požadavek
Myslíš tím i požadavky na načtení CSS stylu, import fontu a podobně?
Zřejmě máš pravdu, u nás není LTE, takže se mi některé stránky načítají půl minuty, jiné deset sekund...

Když zkouším test rychlosti webu, dostanu, že nejdelší je zpracování stránky blok.php.
Z jakého důvodu se čeká 1 sekundu na načtení PHP souboru, kde je jen prostý text (zatím)?
« 1 2

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

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

0