Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Часовые пояса и учет посещаемости сайта во времени
 
 автор: multiBrain   (11.11.2005 в 13:42)   письмо автору
 
 

Уж не знал в какой раздел написать эту тему.

Наверное тема в первую очередь к создателям PowerCounter. Изучил систему,
но возникло некоторое недопонимание по-поводу временых деопазаонов.
На примере поведую. Вот есть распределение хитов по часам суток (0-23), сответственно
когда заходишь в 17.30 посмотреть результаты, должно выходить так, что после 18.00 нули, так как это время еще не настало. Вроде все логично. А как быть если сервер и клиент находятся в разных часовых поясах. Скажем сервер 12.00, а у клиента еще 09.00, получается,
что время обгоняет клиента.
Можно данные продолжать обрабатывать в соотвествии
со временем на сервере, а показывать дынные с откатом на 3 часа. Но в случае с
отставанием времени на сервере, получится, что данных еще нет. Остается только
обрабатывать данные с обманом времени (т.е. постоянно прибовлять или отнимать часы,
соответствующие разнице часовых поясов клиента и сервера). Не очень-то удобно.
И к тому же как быть если пояс клиента зарание не известен или клиентов несколько и они
в разных часовых поясах.
Можа я конечно в упор чего-то не допонимаю, но для меня задачкой встала эта проблемка, как-то обяснять не посвещенным о том, что там какое-то не совпадение часовых поясов и т.п. не очень-то хочется, боюсь большенство не поймет.

   
 
 автор: cheops   (11.11.2005 в 13:51)   письмо автору
 
   для: multiBrain   (11.11.2005 в 13:42)
 

Я чего-то не очень понял что требуется. Где находится сервер и где находится клиент?

   
 
 автор: multiBrain   (11.11.2005 в 15:24)   письмо автору
 
   для: cheops   (11.11.2005 в 13:51)
 

Смысл в том, что если у сервера и клиента установлены разные часовы поясы,
получается разница вов времени. У меня на компе также как и на этом сервере
московское время, поэтому когда я оставляю сообшение, скажем, в 15.00, то у меня и
на сайте показано 15.00 и на часиках в винде 15.00 - все отлично. Но когда я специально
поменял пояс (ткнул по Екатеренбургу +2 часа), то на сервере на форуме 15.00, у меня 17.00
Это я все для примера. Имею я ввиду разницу в показаниях времени на сервере и клиенте.
Так если подобная ситуация будет с каунтером, то получится, что у меня часики показывают
17.00, а в счетчике текущий час 15.00 и соответственно за все последующие часы (а главное
за 16 и 17) статистики еще нет, для сервера это время еще не настало. В итоге не граммотный
в компьютерах человек (скажем заказчик) в недоумении. Ладно с опережением времени, а если
у меня на компе -3 часа, т.е. на сервере 15.00, у меня 12.00 и я вижу статистику за три
будущих для меня (клиента) часа. В этом случаее заказчик вообще ошалеет, как так: у него на
часиках полдень, а статистика уже к обеду.
В итоге, вопрос стоит в синхронизаии "показаний" часов у клиента и на сайте.

   
 
 автор: cheops   (11.11.2005 в 15:41)   письмо автору
 
   для: multiBrain   (11.11.2005 в 15:24)
 

Нужно подумать... там ведь ещё плюс ко всему база данных - в ней точно локально изменить время не получится...

   
 
 автор: multiBrain   (11.11.2005 в 16:32)   письмо автору
 
   для: cheops   (11.11.2005 в 15:41)
 

О смене времени на сервере конечно речи не идет. Остается только фальсифицировать время на выдаче клиенту. Еще надо подумать как...
В случае с созданием комерческих систем статистики для частного использования почти навернека будет ограниченное кол-во клиентов, находящихся в однои поясе, который за рание будет известен. Соответственно данные можно выдовать относительно клиента. Скажем 3 часа разницы: на серваке 15, у клиента 12, то эти 3 часа (13, 14, 15) просто пока не показывать. Сложнее если наоборот: на серваке 12, у клиента 15, чем в этот раз заполнить эти 3 часа...
Можно еще попробовать ввести некий коэфифиент равный разнице поясов (с учетом известности ее), который постоянно прибовлять (коэф. + или -) ко всему времени, оперерирумому в скриптах.
Схема только для частного использования, да и мутарная.

В тему: как раз сегодня в каком-то из сообщений видел фразу: этот вопрос к cheops'у, он правда только вечером будет. М-да, для человека из Владивостока понятие вечера в данном контексте становится двояким.

   
 
 автор: multiBrain   (12.11.2005 в 10:30)   письмо автору
 
   для: multiBrain   (11.11.2005 в 16:32)
 

Единственное до чего я додумался:
Можно попробовать ввести конф. переменную с разницей часов относительно клиента, в начале каждого скрипта,
где есть операции со временем, высчитывать новую дату , прибовляя эту переменную (получая время как у клиента), и
везде вместо текушего времени использовать полученное время, вплоть до записи в БД вместо NOW(). Т.е. вести все записи на сервере относительно не его реального времени, а клиента.
Конечно, все это с учетом известности клиентского часового пояса и если он не будет меняться.
В принципе, для ряда случаев (таких как
частное использование системы статистики) схмема подходит.

   
 
 автор: cheops   (12.11.2005 в 11:31)   письмо автору
 
   для: multiBrain   (12.11.2005 в 10:30)
 

В принципе можно, но это не решит проблему когда счётчиком пользуются клиенты находящиеся в разных часовых поясах...

   
 
 автор: glsv (Дизайнер)   (12.11.2005 в 21:45)   письмо автору
 
   для: multiBrain   (12.11.2005 в 10:30)
 

А как клиент просматривает статистику? У него есть web-интерфейс? Тогда может быть пусть сам и выставляет себе часовой пояс (предусмотреть эту возможность в приложении). И прибавлять/убавлять время уже при SQL-запросе к базе данных при выводе данных конкретному клиенту.
Тогда вам не нужно будет дергать серверную часть, она будет едина для всех. Сервер есть сервер - сверять время по нему всегда надежней, чем по времени клиента.

   
 
 автор: multiBrain   (15.11.2005 в 11:13)   письмо автору
 
   для: glsv (Дизайнер)   (12.11.2005 в 21:45)
 

Веб-интерфейс есть, не через PhpAdmin же клиент статистику смотреть будет, думаю это сложновато будет для не разработчиков.
Во-ревых надо расчитывать, что клиент туп, и застовлять его напрягатся по поводу каких-то поясов, не хорошо.
А, во-вторых я не очень понял какой ему пояс надо выставлять: себя подгонять под сервер, смысла нет, имитировать сервер на выдаче инфы под себя - это я как-то с трудои себе предстовляю.

   
 
 автор: cernos   (11.11.2005 в 15:35)   письмо автору
 
   для: cheops   (11.11.2005 в 13:51)
 

Он хочет сделать то, что сделать неочень сложно!
Вариант №1:

Т.е. какойто юзер зашел на сайт у него 02:00 на часах (по GMT +01:00), следом заходит другой человек, у которого GMT(+03:00) Т.е. наблюдается разница во времмени в 2 часа!

Мы просматривая статистику видим что по московскому времени зашли они в одно и тоже время!

Ваиант №2

Т.е. на хосте стоит GMT +01:00, у хозяина хоста, т.е. у хозяина сайта время +03:00!
Необходимо выводить статистику изходя из GMT 03:00!

Определять GMT можно в приципе у хозяина javascript'ом
и строить статистику изходя из полученного GMT вычитанием и прибавлением часов


Мне кажется что он хотел услышать ответ на второй вариант, так как может образоваться непонятки со стороны хозяина!
Пример:
У хоста время gmt +03:00
А у хозяина сайта +01:00
При просмотре статистики хозяин в шоке, думают что за хрень, сейчас только 17:30 а посещения есть уже за 19:00


Мда, мой топик уже неактуальный, блин с этим долбаннным инетом, пока запостишь..... :\

   
 
 автор: multiBrain   (11.11.2005 в 16:06)   письмо автору
 
   для: cernos   (11.11.2005 в 15:35)
 

я про второй вариант.
Определить время клиента явой коечно можно, правда не очень надежно, нет уверности
что часы в оси правильно выставленны, да сам JS может быть выключен, вообщем
не хочется пологаться на клиента.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования