Pobieranie czasu z internetu
Ostatnio zmodyfikowano 2013-01-14 21:21
Artekp999 Temat założony przez niniejszego użytkownika |
Pobieranie czasu z internetu » 2013-01-14 16:12:45 W czym problem: Mam napisany skrypt W PHP który sprawdza czy program jest włączony czy nie. np. PHP pobiera czas z neta np 2013-01-14 16:02:23 program w C++ wysyła do bazy datę w komputerze np. 2012-03-22 23:03:02 I wtedy błędnie oblicza, pokazuje że program jest offline choć ciągle działa.
Potrzebuję aby program w C++ korzystał z czasu z internetu. Wymyśliłem kilka sposobów jak to uczynić. 1. Pobrać datę z internetu za pomocą curl i ustawić tę datę w systemie. [Ten sposób w ostateczności] 2. Pomyślałem żeby obliczać różnicę między czasami z komputera a Internetu. Jednak miesiące mają różne liczby dni, lata przestępne itp. [Musiałbym napisać dość obszerną funkcję]
Jest jakiś inny sposób??? Mianowicie szybszy i krótszy. Np pobieram datę z Internetu i zapisuje ją do jakiejś funkcji, która zastępuje czas z komputera. |
|
m4tx |
» 2013-01-14 16:17:12 Jednak miesiące mają różne liczby dni, lata przestępne itp. | Sekundy przestępne... ;) W ogóle to dość śmiesznie to próbujesz zrobić. Nie prościej np. pingować w określonych interwałach? |
|
Artekp999 Temat założony przez niniejszego użytkownika |
» 2013-01-14 21:12:04 Mówiąc w skrócie Chodzi mi o to żeby program uruchomiony jednocześnie na kilku komputerach korzystał z czasu z Internetu, aby czas na każdym był taki sam, gdyż czas systemowy będzie się różnił.
Obrazowo: Komputer1 2013-01-14 19:23:32 Komputer2 2013-01-14 18:13:52 Komputer3 2012-01-12 15:55:31
Czas z internetu 2013-01-14 20:05:12
Wiem że najprościej było by zmienić datę systemową, ale to raczej nie wchodzi w grę.
Najlepiej by było gdybym raz pobrał datę z internetu, a później od tej daty program by dalej działał.
Mam pomysł jak to rozwiązać, ale ten sposób nie jest zbyt optymalny. Np. Co kilka sekund pobierać czas z Internetu. |
|
jsc |
» 2013-01-14 21:17:35 Nie utworzyć serwera czasu (jeśli koniecznie chcesz z internetu to proxy)? |
|
m4tx |
» 2013-01-14 21:21:31 Ale... po co Ci to? Jak chcesz sprawdzić, czy program jest uruchomiony to generalnie wystarczy, jak będziesz pingował serwer.
Zamiast ustawiania czasu w systemie proponuję obliczyć różnicę między czasem lokalnym a tym z internetu. Dodatkowo - UNIX definiuje format przechowywania daty i godziny jako 64-bitową liczbę i tego formatu proponuję się trzymać przy wysyłaniu tej danej do serwera. Trzymając się UNIX-owego standardu łatwo policzysz różnicę i dodasz ją do godziny wysyłanej na serwer. |
|
« 1 » |