Autor Zpráva
Voldemort
Profil *
Zdravím,
Potreboval by som, aby mi v PC zaznel tón z mojej stránky každú minútu. Viem že existuje jednoduchý kód aj v HTML na refresh stránky v definovanom intervale, no tam sa pri načítaní vytvára omeškanie/opozdenie. Tzn. ak sa stránka refresne (tón sa spustí v celej minúte), tak nasledovať to bude o minútu a sekundu (kvoli načítaniu). Preto by som potreboval pomôcť s PHP, ktoré moc neovládam. Ideálne by bolo keby script rozonal sekundy zo servera a v každej 55 sekunde každej minúty by spustil obnovu stránky. Nemyslím že je to zložité, len neviem či som to vysvetlil zrozumitelne a neviem ako na to :]
Borius
Profil
Obnovu stránku musíš vždy spustit z prohlížeče (ať už javascriptem či HTML/metatagem), ze serveru nelze. Možná máš tím PHP na mysli Ajax, ten sice pracuje v PHP na serveru, ale pozor – voláš jej opět javascriptem. Prohlížeč vždy nejprve odešle požadavek a pak očekává odpověď, nikdy ne naopak.
Radek9
Profil
Voldemort:
Můžeš použít funkci sleep a v cyklu třeba každou minutu vykreslit <embed>. Jednodušší bude to ale udělat spíš přes JS. Ta ti může spouštět nějaký prvek (např. <audio>) pomocí funkce setInterval.
Lukáš R.
Profil
Stačí udělat zvukový klip, který trvá přesně minutu a zvuk bode jen na začátku/konci. Ten by se přehrával pořád dokola pomocí bgsound
Voldemort
Profil *
Vďaka za rady len ja myslím na niečo iné. Stránka sa nemusí obnoviť bez prehliadača. Ja práveže potrebujem aby sa obnovili keď ju budem mať otvorenú, len mi ide o to aby sa obnovila každú minútu. Skúšal som napísať niečo takéto:

<?php
$datum = StrFTime("%S", Time());

if ($datum="55")
  
?>

len neviem ako pokračovať. Aký príkaz tam dať aby sa obnovila. Ja to asi vysvetľujem zložito, no myslím že je to niečo úplne jednoduché.


Lukáš R.: neviem, možno by to fungovalo, ale mám pocit že by tam nastalo tiež oneskorenie medzi koncom a spustením. Skúšal som to aj klasicky v media playeri dať na loop, no vždy sa tam nejaká stotinka sekundy pridala.
mimochodec
Profil
Voldemort:
Vidím jistý rozpor mezi tvým '$datum="55"' a 'vždy sa tam nejaká stotinka sekundy pridala'.
O jakou přesnost se snažíš?
Voldemort
Profil *
Ja potrebujem aby sa zvuk prehral presne každú minútu - teda (hh:mm:ss) 12:22:00 ; 12:23:00 ; 12:24:00 ....

Ten kód, ktorý som začal písať by práve tú nadbytočnú stotinu sekundy mal odstrániť, pretože by to nebolo opakovanie závislé na predchádzajúcom spustení a nevznikala aby tak žiadna pauza ako napríklad v media playeri pri opakovaní. Radek9 mi radil JS ale tam sa už vôbec nevyznám :/

Jednoducho by som potreboval aby tón zo stránky zaznel v mojom PC automaticky každých 60 sekúnd - nie skôr, ani neskôr.
Borius
Profil
[#5] Voldemort:
Pokud budeš mít
if ($datum="55"){…},
tak čas se bude opakovat každou minutu, nikoli každých 55 sekund: např. 12:00:55, 12:01:55, 12:02:55 atd.
Ale má to větší zádrhel: tato kontola času se vykoná pouze při běhu skriptu (tzn. při refreši stránky). Předpokládám, že ten skript Ti nepoběží trvale.
Voldemort
Profil *
Borius:
Áno, hlúpo som to napísal. Je jedno v ktorej sekunde sa to bude opakovať (môže to byť aj 55. sekunda) ide hlavne o to aby sa opakovala vždy v tej sekunde, teda každú minútu.

A s tým skriptom máš asi pravdu, takto to fungovať nebude..
Borius
Profil
Jako nejvhodnější řešení vidím javascript. Pokud se Ti jedná o časovou přesnost, KLIENT-SERVER/WEB není šťastný nápad. Volil bych zcela jednoznačně desktopovou aplikaci.
Voldemort
Profil *
Také riešenie by som volil aj ja, no problém je v tom že to potrebujem do virtuálneho PC s windows XP a tam čas beží z nejakého dôvodu pomalšie a teda to platí aj pre všetky aplikácie. Preto som chcel aktuálny čas brať z internetu.
Borius
Profil
Když už „musí být“ čas brán ze serveru, pak možná opakované volání skriptu PHP javascriptovým časovačem (třeba každou jednu vteřinu)

  setInterval("casAjaxem();",1000);
, PHP skript ověří zdali již nenastal správný čas

<?php
$datum = date("s");
if ($datum>=59){
   print "true";
}else{
   print "false";
}
?>
,
javascript si odpověď převezme, je-li kladná, pak spustí zvuk. Při záporné odpovědi neučiní nic. A samozřejmě, po každou vteřinu se prohlížeč ptá serveru na čas a jednou za minutu dostane kladnou odpověď. Takhle nějak bych si to představoval. Ale přesné to nebude, bude tam ztráta vzniklá komunikací mezi serverem a klientem (tedy přenos dat a činnost obou počítačů).
peta
Profil
Voldemort, Lukáš R. "Stačí udělat zvukový klip, který trvá přesně minutu a zvuk bode jen na začátku/konci. Ten by se přehrával pořád dokola pomocí bgsound"
Presneji uz to nelze.
Kdyz pc prilis zatizis, tak to pak player stejne nezvladne

JS muze obnovovat stranku, ale nema cas serveru a pro presnou synchronizaci bys musel cas neustale kontrolovat, coz neunosne zatizi stranku. Navic, kdyz si pc zatizis, prohlizec JS nezpracuje nebo zpracuje se zpozdenim. Tez startovani playeru kousne nejaky cas.
Takze je to zhruba stejne nebo mene spolehlive nez player.

V php to jde udelat tim sleep, ale to zatezujes server a chvili trva, nez se posle prenasena informace. Takze ve vysledku, i kdybys do predchoziho reseni s JS poslal cas, muze se stat, ze dorazi za 0.1s-2s, podle toho, jak zrovna je zatizeny internet.

Obnovovat stranku kazdou 1s znamena, ze zatizis neunosne server a pc uzivatele. Uz pri 10-100 uzivatelych na beznem free hostingu ti obvykle vyprsi limit sql dotazu a zrejme admini si vsimnou, ze jim php zatezuje nejak moc server.

Borius: "Volil bych zcela jednoznačně desktopovou aplikaci."
Tam si muzes nastavit uspornejsi UDP komunikaci misto HTTP v prohlizeci.
Voldemort
Profil *
Vďaka za rady.
Borius:
myslím že je to najviac vyhovujúce tomu čo som potreboval, no ako napísal peta, je tam oneskorenie kvôli načítaniu stránky a čas so serveru niekedy vynecháva sekundu. S tým som nepočítal.

peta:
s tým opakujúcim klipom by to bolo najjednoduchšie, no ako som napísal čas vo virtuálnom PC kde to potrebujem plynie z nejakého dôvodu pomalšie/rýchlejšie. Hodina tam trvá cca 61 minút čo je asi spôsobené občasným lagom a celý systém sa tým spomalí a minúta je niekedy dlhšia.

Ešte mi napadá riešenie vysielať zvukový súbor online z nejakej služby kde plynie čas normálne a občasným autorefreshom by sa to prípadne spomalenie v mojom virtuálnom PC vykompenzovalo. Aj keď na takú banálnu vec je to extrémne riešenie :)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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