Autor Zpráva
vojtan
Profil
Nevíte někdo jak vyrovnat čas mezi PHP a java sciptem. Mám v databázi uložený záznam vypršení akce jako Datetime, potřebuji aby po dosažení tohoto času akce z webu zmizela, vytvořil jsem java script, který po dosažený času znovu načte stránku, ale problém je v tom že mezi časem uloženém v databázi a časem java scriptu je prodleva asi 10 vteřin, takže po znovu načtení akce nezmizí a zmizí asi po těch deseti vteřinách, kdy ručně aktualizuji web.

Můžu nějak tyto dva časy vyrovnat třeba podle času serveru? Děkuji za rady
meris
Profil
řešil bych to nastavením timeout a spočtením rozdílu kdy má akce vypršet, takto:
setTimeout('reload()',cas_ukonceni - cas_generovani_skriptu + 1 )
(to + 1 je tam spíše pro opatrnost, ať reaload nevyjde na poslední sekundu platnosti)
máš li tam více těchto dočasných akcí, tak vyberes nejblišží čas vypršení.
Leo
Profil
Řešíte ve skutečnosti dva problémy - jednak rozdíl času nastaveného na webserveru (ten ukazuje PHP) a na počítači kde běží prohlížeč a v něm javascript - to klidně může dělat i desítky minut. Další problém je korekce o dobu přenosu klient (prohlížeč) - webserver a zpět. Pominu možnost, že databáze běží na jiném serveru než PHP a musíte pak ještě zohlednit rozdíly mezi nimi. Leo
meris
Profil
Leo:
Ano, časy na DB serveru, web serveru a u klienta mohou být různé, a mohou se lišit o dost, klidně i o hodiny, pokud je třeba uživatel z jiné časové zóny. Proto je podle mého rozumnější neposílat čas kdy se má stránka znovu načíst, ale počet sekund za které se stránka znovu načte. Měření času v počítačích je přibližně stejné, podle mě.
Rozdíl v čase mezi DB a web serverem můžeš klidně zanedbat, protože si získáš rozdíl a opět pracuješ pouze s rozdílem. Pouze v případě, že by jsi získal čas z DB a pak počítal rozdíl v PHP by se mohl projevit rozdíl.
js
Profil *
Ještě bych dodal, že javascript u klienta se zpožďuje zhruba o 2 tisíciny sekundy každých 10 sekund a to v ideálním případě, že je stránka na který běží aktivní a uživatel s počítačem nic nedělá, ale jak mile v prohlížeči otevřu nový okno a v něm začnu pracovat, tak na předchozí stránce se javascript může začít zpožďovat klidně i o 6 sekund každých 10 sekund, jinými slovy: zatím co reálně uběhne 10 sekund tak javascriptu jen 4, záleží co na druhý stránce, s počítačem zrovna dělám, čím složitější javascript stránky obsahují, tím bude zpoždění větší, takže když si ráno otevřu stránku na který mi poběží javascriptový hodiny a s počítačem během dne budu pracovat tak večer když se na hodiny zase podívám, tak mi můžou jít klidně o hodinu pozdě. Takže takový malý závěr, vyrovnat čas mezi javascriptem a PHP je téměř nemožný, jde sice naprogramovat v javascriptu rádoby vyrovnávací funkce, ale i tak dokážeš čas srovnat minimálně na rozdíl 0,1 sekundy, což je pro programování už celkem dlouhý čas a to nehledě na to, že javascript si bere čas z PC, takže co uděláš, když ti někdo ten čas během běhu tvého skriptu přenastaví? Musíš kontrolovat a zároveň počítat v krátkých časových intervalech pořád rozdíly časů = zbytečný zatížení uživatelova PC a hlavně prohlížeče, mohlo by mít za následek i zasekávání = opět další zpoždění, něco tokového mi přijde jak nosit dříví do lesa. Doporučil bych ti najít jiný způsob.
Petr ZZZ
Profil
Nepřijde mi moudré míchat na takovou věc PHP (serverový) a JS (klientský jazyk), už jen proto, že někteří uživatelé si mohou klientské skripty vypínat, třeba z bezpečnostních důvodů, což je starost, která u serverových skriptů odpadá.
js
Profil *
nechápu lidi, co si vypínají JS "z bezpečnostních důvodů“…, každý chytrý si vypne aktiv-x z bezpečnostních důvodů, javascript je neškodný…
peta
Profil
vojtan:
Viz Leo, skutecny cas serveru si musis v php do js poslat. php zobrazuje cas na pc server, ale js zobrazuje cas na pc uzivatel. Kdyz se mi podela baterka, tak mam napr 1.1.1970.
To, co hledas pouziva bezne tv program, napr http://tv.sms.cz, ale oni to zrejme resi jeste pres jquery.
To, co ti staci, tim neustale hlti forum javascript i php.
http://www.strejda-google.cz/?q=site%3Ajakpsatweb.cz+javascript+cas+server
Petr ZZZ
Profil
Petr ZZZ:
nechápu lidi
Nechápat můžeš, ale pokud vyvíjíš aplikaci, není prostě od věci myslet na to, že JS může být vypnutý (podobně CSS nebo obrázky).

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:

0