Autor | Zpráva | ||
---|---|---|---|
hobr Profil |
#1 · Zasláno: 3. 6. 2012, 21:33:33
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 |
#2 · Zasláno: 4. 6. 2012, 09:23:26
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é. |
||
Časová prodleva: 2 měsíce
|
|||
hobr Profil |
#3 · Zasláno: 25. 7. 2012, 00:03:40
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 |
#5 · Zasláno: 25. 7. 2012, 07:36:18
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š.
|
||
Časová prodleva: 13 let
|
0