Autor Zpráva
hobr
Profil
Potřebuji zajistit pro jednu funkci +- přesný čas, prohnat přes PHP a vyplivnout výsledek na stránku. Server webu, na kterém to poběží bohužel trpí zvláštními časovými odchylkami a na čas klienta se také nelze spolehnout, proto bych potřeboval nějaké nezávislé stabilní ověřené řešení. Přesnost potřebuji v řádu sekund, půlminuta je max. odchylka.

Díky moc za nápady a tipy, sám jsem v hledání nebyl úspěšný...
Amunak
Profil
A nemůžeš to nějak opravit na tom serveru?

Po velmi krátkém googlení jsem našel celkem slibný skript. S ním můžeš posílat požadavky třeba na pool.ntp.org.

Pokud to budeš potřebovat načíst jen jednou za čas, mělo by to být v pohodě. Pokud příliš často, budeš to muset nějak kešovat.

Pokud se dá na čas na serveru spolehnout třeba alespoň v rámci jedné hodiny, mohl bys výsledek z ntp serveru uložit do souboru, a pak když se čas úpravy toho souboru a čas serveru liší o více než hodinu stáhnout nový požadavek. Aktuální čas pak spočítáš jako čas ze souboru + čas vytvoření souboru - systémový čas. Mělo by to být relativně přesné.
hobr
Profil
Amunak:
Neměl jsem čas se tomu věnovat, tak se k tomu vracím až teď... Nastavení serveru bohužel opravit nemohu... Navíc, pokud by se výsledek lišil o necelou hodinu, tak je ta funkce k ničemu... Potřebuju přesnost v řádu vteřin, půlminuta by měla max odchylka ve výjimečných případech!

Mezitím jsem sice našel nějaké zdroje, jak dostat na web přesný čas (např. http://wwp.greenwichmeantime.com/time-zone/europe/european-union/czech-republic/prague/index.htm), jenže já potřebuju ten čas zpracovat a vypočíst rozdíly. A to jsem nepřišel na to, jak z tohoto ty data dostat...

Já potřebuju něco, co mi poskytne přesný čas ve formátu, který můžu zpracovat v PHP, případně JS (ale to moc neumím...). Aby byl čas na stránce nezávislý jak na serveru, tak na PC uživatele a synchronizoval si ho z nezávislého zdroje přesného času.
Amunak
Profil
hobr:
Rozdíly mezi čím? Jinak teď mě napadlo, že by to možná šlo ještě snáze. Pokud máš nějaký jiný server (nebo třeba jen webhosting s PHP - v nejhorším případě by šlo použít i freehosting) prostě si tam uděláš nějaký soubor s echo microtime(); a pak ho přes file_get_contents() budeš načítat. Kdyby ty požadavky nebyly spolehlivé (třeba výpadky freehostingu) mohl by to být trochu problém. Já bych to asi pak ještě obalil do microtime a spočítal tak čas toho požadavku, a kdyby překročil nějakou rozumnou mez (třeba deset sekund) zkusil bych to znova. Taková "velká" doba požadavku může znamenat jen dvě věci - buď se ti zrovna na lokále posunul čas, nebo vzdálený server timeoutuje. Proto bude lepší zkusit to znovu.

No nic, to jen takový nápad. Je to hlavně o hodně snazší než se pokoušet číst to z ntp serverů.

Ještě jsem teď zkoumal starší protokol DAYTIME. Stačí ti otevřít si v PHP socket a připojit se třeba na time.nist.gov na port 13 - dostaneš odpověď podobnou této: 56132 12-07-24 23:13:09 50 0 0 31.1 UTC(NIST) * a spojení se samo uzavře. Vypreparovat z toho pak datum a čas není problém. Dokonce si to samo reguluje i prodlevu připojení, takže pak už to nemusíš řešit.
Ugo
Profil
jak vypadají ty výsledky? nešlo by třeba uchovávat ten přesný čas (nebo rozdíl mezi ním a serverovým), uchovávat aktuální čas a čas na použití počítat právě tak že ten rozdíl přičteš ke svýmu? Ten čas pak můžeš aktualizovat třeba každou hodinu a nebo když se bude lišit o víc než hodinu. Teoreticky bys tak moh ušetřit hodně požadavků, problém ale je, že přesný stejný čas asi nezískáš, tý odchylce ve vteřinách se asi nevyhneš.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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