2009-12-05 42 views
8

Tôi đang nghĩ đến việc lưu trữ ngày đăng nhập của người dùng trong trang web của mình, nhưng tôi không biết giải pháp hợp lý nhất là gì.MySQL: giữ múi giờ của máy chủ hoặc múi giờ của người dùng?

Ban đầu, mặc dù sử dụng múi giờ của máy chủ và sau đó quản lý nó bằng cách sử dụng các hoạt động khác nhau giữa ngày máy chủ và ngày người dùng, nhưng tôi cũng đã xem xét thay đổi nó bằng cách sử dụng múi giờ và ngày lớp php, vì vậy:

<?php 
// my server has for example America/New_York timezone 
$user_timezone = "Europe/Rome"; 
date_default_timezone_set ($user_timezone); 
$date = date ('Y-m-d H:i:s'); 
$sql = "UPDATE users SET user_last_modify = '$date', user_timezone = '$user_timezone' WHERE user_id = 'some id' LIMIT 1;"; 
$res = mysql_query ($sql); 
?> 

Câu hỏi của tôi là giải pháp tốt nhất, giữ múi giờ máy chủ hoặc sử dụng múi giờ của người dùng là gì?
và nếu tôi sử dụng múi giờ của người dùng, tôi có nên lưu tên múi giờ như trong ví dụ của tôi không?

Trả lời

14

Tôi khuyên bạn nên sử dụng múi giờ của máy chủ hoặc UTC, thay vì lưu trữ dữ liệu khác nhau cho từng người dùng. Bằng cách này, cơ sở dữ liệu của bạn sẽ hoàn toàn nhất quán và bạn có thể thực hiện một số hoạt động như so sánh mà không phải, đối với mỗi mục nhập, tìm cột user_timezone và thực hiện chuyển đổi (không hoàn toàn miễn phí)

+1

UTC có thể đơn giản hóa hầu hết mọi thứ. Đặc biệt là DST chuyển đổi –

+4

+1, nhưng thậm chí nhiều hơn như vậy đối với UTC trên múi giờ của máy chủ. Điều gì sẽ xảy ra nếu bạn muốn di chuyển máy chủ sau hoặc có nhiều máy chủ trên khắp thế giới? –

+0

cảm ơn quá nhiều để được giúp đỡ, bạn cũng biết về một bảng UTC với các cuộc tấn công respecitve? so -1100, -1200, -1300, v.v. – vitto

2

Sử dụng UTC. Nó sẽ giúp bạn tiết kiệm nhiều giờ thất vọng.

Thời gian địa phương của người dùng là vấn đề trình bày - chuyển đổi dễ dàng hơn/từ thời gian địa phương cho người dùng nhất định hơn là theo dõi TZ của các trường ngày của mỗi bản ghi trong cơ sở dữ liệu.

Thậm chí nếu sử dụng múi giờ máy chủ có thể là hấp dẫn, các quy tắc DST có thể thay đổi vào rất thông báo ngắn (xem: Argentina DST 2009 - govt đã ra quyết định không sử dụng DST, phụ lục 1 tuần trước khi nó được cho là xảy ra.) ; trong một số trường hợp, chính múi giờ có thể thay đổi (xem Time in Indiana). Định nghĩa của UTC dường như không trải qua bất kỳ sự thay đổi mạnh mẽ nào như vậy.

(Một câu chuyện về thời gian máy chủ và giờ địa phương: có máy chủ trên bờ biển phía Tây Hoa Kỳ, chuyển nó sang bờ biển phía Đông Hoa Kỳ, các ứng dụng đang sử dụng thời gian máy chủ, tất cả địa ngục đều bị mất. máy chủ khác nhau châu lục.)

Các vấn đề liên quan