Autor Zpráva
Martin02
Profil
Ahoj,
potřeboval bych poradit. V javascriptu jsem si udělal datum a čas s tim, že se bude aktualizovat každejch 500 ms, takže budou sekundy normálně běžet. Ovšem je to javascript a čas se určuje podle počítače. Kamarád mi řikal, že jestli chci správnej čas vždycky (aby to nezáleželo na počítači), tak mam nějak navázat spojení s nějakym serverem a čas bude běžet podle tohoto serveru. Také, že prej to bude muset být v php. Mohl by mi někdo prosím poradit jak na to?

předem mockrát děkuji za odpověď
Segi_L
Profil
get_time.php - jeho kód
<?PHP 
    list($usec, $sec) = explode(" ",microtime());    
    echo ((int)(((float)$usec + (float)$sec)*1000));
    return;
?>


Javascript funkce vracející počet ms na serveru na ktorom je uložený get_time.php
Tento príklad predpokladá jQuery
<script type="text/javascript" language="JavaScript">
<!--
function get_time_from_server(){
  //v ajaxu pridaný parametr anti_cache aby nebral cache.
  var now = new Date();
  $.ajax
  (
    {
      type: "GET",
      url: 'get_time.php?anti_cache='+now.getTime(),
      success: function(html)
      {        
        return html;   
      }
    }
  );         
}
//-->
</script>
Davex
Profil
Martin02:
Ty snad nemáš v operačním systému na liště přesný čas, že kvůli tomu musíš programovat stránku v JavaScriptu?

Každopádně se stačí zeptat serveru na přesný čas jen jednou. Nemusíš ho otravovat každou chvíli.
Bubák
Profil
Martin02:
V javascriptu jsem si udělal datum a čas
To k něčemu potřebuješ, nebo děláš stránku metodou už umím vložit skript, tak na stránku nějaké plácnu, ať ji nemám prázdnou.


Na spoustě webhostingů jsou ujetější hodiny, než máš v počítači, takže na PHP bych se nespoléhal.
Koukni na http://www.presnycas.cz/ vyžaduje Javu, ale i bez ní si přečteš, oč běží.
Taky si můžeš přečíst http://cs.wikipedia.org/wiki/Network_Time_Protocol
Chamurappi
Profil
Reaguji na Segiho_L:
Hloupé. Stačí natáhnout jeden externí <script>, AJAX ani jQuery nepotřebuje.


Reaguji na Bubáka:
Na spoustě webhostingů jsou ujetější hodiny, než máš v počítači
Mohl by využít externí službu (i když nevím, jak moc je stabilní a spolehlivá).
Segi_L
Profil
Chamurappi:
„Stačí natáhnout jeden externí <script>"
To by som musel ale vedieť aký.
Chamurappi
Profil
Reaguji na Segiho_L:
Skript generující volání JS funkce s argumentem obsahujícím to, co vrací ten tvůj get_time.php. (Nemusí vůbec využívat tu službu, kterou jsem zmínil.)
Darker
Profil
Já to dělám takhle.
<script type="text/javascript">
var time={h:<?php echo Date("G")?>,
m:<?php echo 1*((int)Date("i"))?>,
s:<?php echo 1*((int)Date("s"))?>};
setInterval("time.s++;if(time.s==60){time.m++;time.s=00;if(time.m==60){time.m=0;time.h++}}",1000);
</script>
_es
Profil
Darker:
Já to dělám takhle.
Tak to robíš zle, časovač nemusí byť spustený presne každú sekundu a bude nastávať oneskorenie, v niektorých prehliadačoch a pri nejakom vyššom zaťažení prehliadača aj veľké. Treba pracovať s časom v počítači návštevníka a rozdielom medzi jeho časom a časom servera.
Darker
Profil
_es:
Pravda, to dělám špatně. Opravím si to, měl jsem si to uvědomit.
Skript se původně pojil rovnou s hodinkami, které se aktivně každou sekundu měnily.

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:

Prosím používejte diakritiku a interpunkci.

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