 
			
				26.09.2012, 20:57
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Тлен 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 02.01.2010 
					
					
					
						Сообщений: 6,601
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Уродливое, кривое решение через жопу. А главное - нерабочее. 
Уже через 5-10 минут использования сайта появятся серьёзные расхождения в дате, т.к. setTimeout  не гарантирует, что следующий запуск будет точно через секунду, он гарантирует только то что запуск будет не раньше чем через секунду. Малейшее подтормаживание и таймер сбит.
 
Делать надо как-то так было:
 
<b id="seconds">00:00:00</b>
<script type="text/javascript">
(function(){
	var difference = <?php echo time() ?>*1000 - new Date(), //сразу вычисляем разницу между серверным временем и временем на клиенте
		block = document.getElementById("seconds");
	(function redraw(){
		var date = new Date(); //получаем текущую дату клиента
		date.setTime( date.getTime() + difference); //прибавляем разницу
		block.innerHTML = date.toTimeString().substring(0,8); //форматируем и выводим
		setTimeout(redraw, 1000); //запускаем таймер на повтор функции
	}())
}())
</script>
 
		
	
		
		
		
		
		
			
				__________________ 
				29375, 35 
 
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				26.09.2012, 21:15
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Тлен 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 02.01.2010 
					
					
					
						Сообщений: 6,601
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Щито? Насколько я понимаю php echo сразу выдаётся в поток, script тоже обрабатывается в потоке, т.е.  переменная differece появляется практически сразу и лаг не должен составить и пары миллисекунд. А вот с ajax всё вилами по воде писано. 
		
	
		
		
		
		
		
			
				__________________ 
				29375, 35 
 
			 
		
		
		
		
		
						  
				
				Последний раз редактировалось Aetae, 26.09.2012 в 21:18.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				26.09.2012, 21:43
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Тлен 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 02.01.2010 
					
					
					
						Сообщений: 6,601
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Вы ещё tcp пакеты посчитайте.) 
Я в php не знаток, но вроде как если специально не включена функция буффера все echo отправляются клиенту сразу без накопления.   
 
В любом случае ajax гараздо менее надёжен в плане лага. 
		
	
		
		
		
		
		
			
				__________________ 
				29375, 35 
 
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				26.09.2012, 23:52
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Тлен 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 02.01.2010 
					
					
					
						Сообщений: 6,601
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Ajax это в любом случае дополнительный запрос, что даёт огромный простор для лагов. Далее событийная модель опятьже добавляет задержку... 
		
	
		
		
		
		
		
			
				__________________ 
				29375, 35 
 
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.03.2013, 15:47
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.07.2012 
					
					
					
						Сообщений: 6
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Aetae, ваш пример тоже не совсем делает то, что требуется. Если у клиента будет время отличное от сервера, то ваш скрипт будет отображать время клиента, а не время сервера, а значит он не выполняет того, о чем спрашивал автор. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.03.2013, 16:56
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.09.2010 
					
					
					
						Сообщений: 8,804
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Думаю через xhr-запрос можно точнее синхронизировать время. Так мы можем узнать общее время пинга, и поделив его пополам - примерную задержку на доставку ответа от сервера. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.03.2013, 17:13
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.07.2012 
					
					
					
						Сообщений: 6
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от danik.js
			 
		
	 | 
 
	| 
		Думаю через xhr-запрос можно точнее синхронизировать время. Так мы можем узнать общее время пинга, и поделив его пополам - примерную задержку на доставку ответа от сервера.
	 | 
 
	
 
 да речь пока не про это, а про то, что нужно хотя бы одинаковое время у всех клиентов показывать, независимо от того, какая у него дата на компе.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.03.2013, 17:30
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 25.07.2012 
					
					
					
						Сообщений: 6
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
var baseTime = <?php echo time() * 1000 ?>;
var startTime = new Date().getTime();
var UTC = 4;
	
function redraw(){
	var date = new Date() - startTime;
	var time = baseTime + date;
	
	var d = new Date(time);
	d.setUTCHours(d.getUTCHours() + UTC);
	$('.clock').html(d.toUTCString().substring(16, 25));
	
	setTimeout("redraw()", 1000); //запускаем таймер на повтор функции
}
$(document).ready(function()
{
	redraw();
});
Вот я написал, не зависит от часовых поясов. Но зависит от времени на компе клиента, если время изменить на неправильное, то время будет неверное    
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось Santehnick, 09.03.2013 в 17:44.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				09.03.2013, 23:13
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 х.з 
				
				
				
				
	
 
 
			 | 
			  | 
			
				
				
					Регистрация: 21.11.2010 
					
					
					
						Сообщений: 4,588
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 получение времени с сервера.  
а на сервере установлен сервер времени? нет ? 
- "ручная" синхронизация с любым временем может отпасть после любой проблемы 
 
синхронизация на клиенте с мировым 
виндовс служба времени включена ?(по умолчанию нет) 
 -нет? не то что локальное, "мировое" из биоса поднимается - вероятность правильного низкая . 
 
пинг делить на 2? -без службы времени в винде погрешность около 15 мс на вычисления 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				10.01.2015, 08:46
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 10.01.2015 
					
					
					
						Сообщений: 1
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Саша82, спасибо! 
 
Тут вопрос для какой цели? Мне вот особая точность не нужна, достаточно минуты после загрузки страницы. 
 
Сервер халявный, связи с админом практически нет, приходится вставлять костыли, так как время сервера неверное, да ещё гуляет. 
Повесил часики на гостевой, мне ребята позвонят если сильно отстают, а я забываю иногда сверять. А на стоячее время никто внимания не обратит. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |