Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript][PHP] Różnica w odmierzaniu czasu, jak znowelować lub zsynchronizować
shpaque
post
Post #1





Grupa: Zarejestrowani
Postów: 651
Pomógł: 3
Dołączył: 31.01.2011
Skąd: Warszawa

Ostrzeżenie: (10%)
X----


witam serdecznie, napisałem coś na szybko:
  1. <p id="php"></p>
  2. <p id="js"></p>
  3.  
  4. var jsTime = new Date();
  5. var phpTime = new Date("<?php echo date('c'); ?>");
  6. document.getElementById("php").innerHTML = 'Czas z serwera PHP: ' + phpTime;
  7. document.getElementById("js").innerHTML = 'Czas przeglądarki (JS): ' + jsTime;


jest to sfiddlowane tu: https://www.tehplayground.com/CkYfUInJPBESsPjc

generalnie u mnie w obecnym momencie pokazuje ze czas z serwera jest ok 13 sekund opozniony wzgledem przegladarki. Pytanie - czy daj się (i jak) to zniwelować a najlepiej zrobić jakiś button ze skryptem, który zaktualizuje czas w przeglądarce / systemie względem czasu PHP..?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
SmokAnalog
post
Post #2





Grupa: Zarejestrowani
Postów: 1 707
Pomógł: 266
Dołączył: 3.07.2012
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Najprościej ustalić różnicę między czasem serwera i klienta:

[JAVASCRIPT] pobierz, plaintext
  1. const clientTime = new Date();
  2. const serverTime = new Date(<?= time() * 1000 ?>);
  3. const timeDifference = serverTime - clientTime;
  4.  
  5. function getTime() {
  6. return new Date(Date.now() + timeDifference);
  7. }
[JAVASCRIPT] pobierz, plaintext

Funkcja getTime() zwróci Ci czas zsynchronizowany z serwerowym, bo zna różnicę między nimi. Na samym setInterval() czy tam setTimeout() nie można polegać, bo nie ma gwarancji, że rzeczywiście wykona się po ustalonym czasie.

Ja używam takiego sposobu jak powyżej, a jeśli chcę do tego wyświetlać np. zegar w czasie rzeczywistym, to korzystam z takiej funkcji wewnątrz właśnie setInterval(). W tym przypadku już ewentualne rozbieżności czasowe dla setInterval() nas nie interesują, bo nawet gdy wykona się zbyt późno lub zbyt wcześnie, to zwrócony czas i tak jest prawidłowy. Jedyną zagwozdką jest wtedy, na ile ustawić licznik setInterval(). Ja ustawiałem na 1000 (co sekundę), bo aż tak mnie nie obchodziły ewentualne zgrzyty w postaci np. pokazywaniu tej samej wartości zegara przez dwa cykle (dwie sekundy) lub skoki o dwie sekundy w jednym cyklu. Ale jeśli zegar musi być bardzo realistyczny, to warto rozważyć mniejszą wartość w setInterval(), może nawet 100 milisekund.
Go to the top of the page
+Quote Post

Posty w temacie
- shpaque   [JavaScript][PHP] Różnica w odmierzaniu czasu   20.05.2020, 13:23:18
- - trueblue   Ale po co synchronizować? Bazuj wyłącznie na czasi...   20.05.2020, 13:25:30
- - shpaque   nie da się - co zrobić w przypadku countera w js n...   20.05.2020, 13:26:04
- - viking   Czas z serwera PHP: Wed May 20 2020 14:26:06 GMT+0...   20.05.2020, 13:27:10
- - trueblue   Co chcesz osiągnąć, zapewnić równą sekundę na wszy...   20.05.2020, 13:31:57
- - shpaque   no u mnie jest tak: Czas z serwera PHP: Wed May 2...   20.05.2020, 13:35:09
- - trueblue   Cytat(shpaque @ 20.05.2020, 14:35:09 ...   20.05.2020, 14:08:10
- - shpaque   ok to teraz jak to zrobic kiedy skrypt korzysta z ...   20.05.2020, 14:28:13
- - trueblue   Nie ma opcji wstawienia daty? To od jakiej odlicza...   20.05.2020, 14:41:46
- - shpaque   RE: [JavaScript][PHP] Różnica w odmierzaniu czasu   20.05.2020, 15:03:44
- - trueblue   Przecież jest nawet przykład: http://hilios.github...   20.05.2020, 15:40:04
|- - shpaque   Cytat(trueblue @ 20.05.2020, 16:40:04...   20.05.2020, 19:54:49
- - trueblue   Zarzyj w kod tego pluginu. Jest tam ustawianie dat...   20.05.2020, 20:00:16
- - shpaque   w sumie racja... Cytat(trueblue @ 20.05.2020...   20.05.2020, 20:31:03
- - trueblue   Tu: https://github.com/hilios/jQuery.countdown/......   20.05.2020, 20:41:19
- - shpaque   ok zrobilem to sobie juz, teraz mam zagwostke przy...   23.05.2020, 21:17:31
- - Tomplus   Testowałeś przypadek gdy użytkownik będzie korzyst...   23.05.2020, 22:51:40
- - shpaque   testowalem 5 i 7 minut w jedna i w druga strone - ...   18.09.2020, 13:32:34
- - SmokAnalog   Najprościej ustalić różnicę między czasem serwera ...   18.09.2020, 14:42:56
- - shpaque   no ja mam tam tak zrobione: [HTML] pobierz, plain...   18.09.2020, 15:00:03
- - SmokAnalog   Praktycznie to samo. To jak brzmi pytanie?   18.09.2020, 15:09:20
- - shpaque   ponieważ w jednym miejscu - wlasciwie glownym - ko...   18.09.2020, 15:16:35
- - SmokAnalog   Nie za bardzo mi się chce analizować ten kod. Może...   18.09.2020, 15:42:38
- - shpaque   po krótce nie wiem jak w pliku api (the final coun...   21.09.2020, 14:03:03


Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 9.10.2025 - 17:03