2010-07-14 27 views
7

मैं फ़ाइलों की सूची और उनके संबंधित अंतिम-संशोधित दिनांक/समय प्राप्त करने के लिए PHP के ftp_rawlist फ़ंक्शन का उपयोग कर रहा हूं। मेरे उद्देश्यों के लिए, मुझे अंतिम संशोधित दिनांक/समय के समय क्षेत्र (या ऑफ़सेट) को जानने की आवश्यकता है। अकेले तिथियां/समय मेरे लिए बेकार हैं क्योंकि मुझे उन्हें यूटीसी में बदलने की जरूरत है।कैसे प्राप्त करें: एफ़टीपी सर्वर का समय क्षेत्र सेटिंग?

क्या यह पता लगाने के लिए वैसे भी है कि FTP सर्वर का समय क्षेत्र सेटिंग क्या है?

+0

कोशिश इसे चलाने के लिए :) http://www.php.net/manual/en/function.ftp-exec.php –

+0

क्या आदेश मैं करता हूँ समय क्षेत्र सेटिंग प्राप्त करने के लिए निष्पादित करें? – StackOverflowNewbie

उत्तर

8

दूरस्थ सर्वर के समय क्षेत्र को निर्धारित करने के लिए FTP मानक में कोई तरीका परिभाषित नहीं किया गया है।

यदि आपके पास FTP सर्वर पर लिखने की अनुमति है तो मुझे लगता है कि आप फ़ाइल अपलोड कर सकते हैं और फिर एफ़टीपी और स्थानीय रूप से रिपोर्ट किए गए फ़ाइल समय के बीच अंतर की गणना कर सकते हैं।

+0

मेरा मानना ​​है कि ड्रीमवेवर इस विधि का उपयोग करता है। – Brad

+0

अरे ... यही वह दृष्टिकोण है जिसे मैं कोशिश करने जा रहा था लेकिन मुझे उम्मीद थी कि एक बेहतर समाधान होगा। धन्यवाद। –

+0

लेकिन अगर आप सुपर सटीक बनना चाहते हैं तो इस तरह आप डेलाइट सेविंग टाइम पर जानकारी नहीं प्राप्त कर सकते हैं। – gumik

-3

फाइलों पर एक समय की तारीख में पहले से ही समय क्षेत्र शामिल है। लाइब्रेरी जो मैं अंतिम संशोधित समय/दिनांक (edtFTPNet) प्राप्त करने के लिए उपयोग कर रहा हूं, वह मानता है कि आपके स्थानीय सिस्टम समय में परिवर्तित दिनांक दिनांक लौटाता है। मुझे लगता है कि अन्य पुस्तकालय एक ही काम करेंगे।

+0

सच नहीं है। एक FTP सर्वर से लौटाए गए दिनांक/समय में सर्वर के टाइमज़ोन का कोई संकेत नहीं है। –

0

अपने PHP कोड की शुरुआत में अपना टाइमज़ोन परिभाषित करने का प्रयास करें। उदाहरण: date_default_timezone_set ("सीईटी"); मेरे लिए यह समाधान काम करता है क्योंकि यह स्वचालित रूप से सर्वर के समय को एक अलग टाइमज़ोन से वांछित में परिवर्तित कर देता है।

0

मुझे हाल ही में एक ही समस्या थी। मेरा दृष्टिकोण रूट/नामक रूट में एक फ़ोल्डर बनाना था और फिर इसे वापस पढ़ें और फ़ोल्डर्स निर्माण की तारीख की जांच करें। मैं अपने FTP क्लाइंट और सर्वर के बीच समय अंतर स्थापित कर सकता था। उम्मीद है की यह मदद करेगा।

BTW मैं ftp_exec आदेश के माध्यम से उपयोग कर रहा हूँ https://github.com/ArxOne/FTP

// Establish a fallback 
var servertime = DateTime.Now; 
try 
{ 
    // query for the existance of a time folder 
    var timefolder = ftpClient.ListEntries("/").FirstOrDefault(o => o.Name == "time"); 
    // delete it if found 
    if (timefolder != null) 
    { 
     ftpClient.Delete("/time"); 
    } 
    // if not found create one 
    ftpClient.Mkd("/time"); 
    timefolder = ftpClient.ListEntries("/").FirstOrDefault(o => o.Name == "time"); 
    if (timefolder == null) 
    { 
     Logger.Fatal("Time check failed"); 
     return; 
    } 
    // now grab the time of the folder. 
    servertime = timefolder.Date; 
} 
catch (Exception x) 
{ 
    Logger.Fatal(x,"Time check fatal error"); 
    return; 
}