2009-12-05 24 views
8

मैं अपनी साइट में उपयोगकर्ता लॉगिन पर तारीखों को स्टोर करने के बारे में सोच रहा हूं, लेकिन मुझे नहीं पता कि सबसे तार्किक समाधान क्या है।MySQL: सर्वर टाइमज़ोन या उपयोगकर्ता टाइमज़ोन रखें?

प्रारंभ में, मैं सर्वर टाइमज़ोन का उपयोग करने के लिए, और उसके बाद सर्वर मशीन दिनांक और उपयोगकर्ता मशीन दिनांक के बीच अंतर संचालन का उपयोग करके इसे प्रबंधित करने के लिए, लेकिन मैंने टाइमज़ोन और PHP श्रेणी दिनांक का उपयोग करके इसे सीधे बदलना भी माना है, इसलिए:

<?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); 
?> 

मेरा प्रश्न है, सबसे अच्छा समाधान क्या है, सर्वर टाइमज़ोन रखें या उपयोगकर्ता टाइमज़ोन का उपयोग करें?
और यदि मैं उपयोगकर्ता टाइमज़ोन का उपयोग करता हूं, तो क्या मुझे टाइमज़ोन नाम भी मेरे उदाहरण में सहेजना चाहिए?

उत्तर

14

मैं प्रत्येक उपयोगकर्ता के लिए अलग-अलग डेटा संग्रहीत करने के बजाय सर्वर टाइमज़ोन या यूटीसी का उपयोग करने की सलाह दूंगा। इस तरह, आपका डेटाबेस पूरी तरह से संगत होगा, और आप प्रत्येक प्रविष्टि के लिए तुलना किए बिना तुलना जैसे तुलना कर सकते हैं, उपयोगकर्ता_टाइज़ोन कॉलम प्राप्त करें और रूपांतरण करें (जो पूरी तरह से मुक्त नहीं है)

+1

यूटीसी अधिकांश चीजों को सरल बना सकता है। विशेष रूप से डीएसटी स्विच –

+4

+1, लेकिन सर्वर समय क्षेत्र पर यूटीसी के लिए और भी बहुत कुछ। क्या होगा यदि आप बाद में सर्वर को स्थानांतरित करना चाहते हैं, या दुनिया भर में एकाधिक सर्वर हैं? –

+0

मदद के लिए बहुत बहुत धन्यवाद, क्या आप एक यूटीसी टेबल के बारे में भी जानते हैं जो respecitve offests के साथ है? तो -1100, -1200, -1300 आदि – vitto

2

UTC का उपयोग करें। यह आपको निराशा के कई घंटे बचाएगा।

उपयोगकर्ता स्थानीय समय प्रस्तुति का विषय है - किसी दिए गए उपयोगकर्ता के लिए स्थानीय समय से/स्थानीय रूप से कनवर्ट करना बहुत आसान है, डेटाबेस में प्रत्येक रिकॉर्ड के दिनांक फ़ील्ड के TZ को ट्रैक करना।

यहां तक ​​कि सर्वर के समय क्षेत्र का उपयोग कर आकर्षक हो सकता है, अगर, DST नियमों बहुत अल्प सूचना पर बदल सकता है (देखें: Argentina DST 2009 - सरकार डीएसटी का उपयोग नहीं करने का निर्णय, appx बना दिया है 1 सप्ताह पहले यह तो होना ही चाहिए था।) ; कुछ मामलों में, टाइमज़ोन स्वयं बदल सकता है (Time in Indiana देखें)। यूटीसी की परिभाषा किसी भी तरह के कठोर परिवर्तन से गुजरने की संभावना नहीं है।

(सर्वर समय और स्थानीय समय के बारे में एक कहानी: यूएस वेस्ट तट पर एक सर्वर था, इसे यूएस ईस्ट तट पर ले जाया गया; ऐप्स सर्वर का उपयोग कर रहे थे; सभी नरक ढीले हो गए। वर्चुअलाइजेशन के साथ, आसानी से और जल्दी से चलना संभव है विभिन्न महाद्वीपों के लिए सर्वर।)

संबंधित मुद्दे