PHP: मैं फ़ाइल निर्माण तिथि कैसे प्राप्त कर सकता हूँ?


84

मैं बहुत सारी फ़ाइलों के साथ एक फ़ोल्डर पढ़ रहा हूं।

मैं किसी फ़ाइल की निर्माण तिथि कैसे प्राप्त कर सकता हूं। मुझे इसे प्राप्त करने के लिए कोई प्रत्यक्ष कार्य नहीं दिख रहा है।

कर रहे हैं filemtimeऔर filectime

और अगर फ़ाइल को संशोधित नहीं किया गया है, तो क्या होगा?

जवाबों:


111

फिलामेंट का उपयोग करें । विंडोज के लिए यह निर्माण समय लौटाएगा , और यूनिक्स के लिए परिवर्तन समय जो आपको मिल सकता है सबसे अच्छा है क्योंकि यूनिक्स पर कोई निर्माण समय नहीं है (अधिकांश फाइल सिस्टम में)।

यह भी ध्यान दें कि कुछ यूनिक्स ग्रंथों में फ़ाइल के निर्माण का समय फ़ाइल के निर्माण समय के रूप में जाना जाता है। ये गलत है। अधिकांश यूनिक्स फाइल सिस्टम में यूनिक्स फ़ाइलों के लिए कोई निर्माण समय नहीं है।


जिस समय फ़ाइल को अंतिम बार बदला गया था, या विफलता पर FALSE लौटाता है। समय यूनिक्स टाइमस्टैम्प के रूप में वापस आ गया है।
राशि

@ ज़ोड यदि आप पहली पंक्तियों की तुलना में थोड़ा आगे पढ़ते हैं तो आप अधिक समझ सकते हैं। टिप्पणियों में भी थोड़ा जाएं।
अलीन पुरकारू

वह तारीख नहीं है। Thats सभी मैंने कहा :-)
राशि

11
filemtimeलिनक्स के लिए बेहतर है, अधिक सटीक है, जैसा filectimeकि मालिक के दौरान बदला गया है, अन्य कार्यों के लिए अनुमति परिवर्तन। लिनक्स पर निर्माण समय प्राप्त करने के लिए आपको अधिक मौके मिलेंगेfilemtime
Fedir RYKHTIK

क्या इस php फ़ंक्शन को चलाना या अंतिम अपडेट के लिए MySQL फ़ील्ड को खींचना आसान होगा? मेरे मामले में छवि पथ DB में स्टोर है और पहले से ही एक चुनिंदा क्वेरी चला रहा है
drooh

17

यह PHP के प्रलेखन से लिया गया उदाहरण कोड है: https://www.php.net/manual/en/function.filem.np

// outputs e.g.  somefile.txt was last changed: December 29 2002 22:16:23.

$filename = 'somefile.txt';

if (file_exists($filename)) {

    echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename));
}

कोड फ़ाइल नाम निर्दिष्ट करता है, फिर जाँचता है कि क्या यह मौजूद है और फिर संशोधन समय का उपयोग करके प्रदर्शित करता है filemtime()

filemtime() 1 पैरामीटर लेता है जो फ़ाइल का पथ है, यह सापेक्ष या निरपेक्ष हो सकता है।


4
राकेश कृपया अपना कोड स्पष्ट करें, बस कुछ कोड पोस्ट न करें और लोगों से इसे समझने की अपेक्षा करें।
21

2
यद्यपि यह कोड-ओनली पोस्ट प्रश्न का उत्तर दे सकता है, कृपया इसका स्पष्टीकरण जोड़ें कि यह ऐसा क्यों करता है। इससे भविष्य के पाठकों को उनकी स्थिति के लिए उत्तर का मूल्यांकन करने में मदद मिलेगी।
टॉम ब्रुनबर्ग

1
फ़ंक्शन filemtime()संशोधन समय देता है।
स्टीफन

माइकल, चूंकि फिल्म निर्माण का अर्थ () फ़ंक्शन स्पष्ट नहीं है, कोड कुछ टिप्पणी का हकदार है।
रेडियम

कोड फ़ाइल नाम निर्दिष्ट करता है, फिर जाँचता है कि क्या यह मौजूद है और फिर फिल्मांकन () का उपयोग करके संशोधन समय प्रदर्शित करता है। filemtime () 1 पैरामीटर लेता है जो फ़ाइल का पथ है, यह सापेक्ष या निरपेक्ष हो सकता है। ऊपर दिए गए उदाहरण को PHP प्रलेखन से कॉपी किया गया है यहां php.net/manual/en/function.filemtime.php
हार्वे

8

दुर्भाग्य से यदि आप लिनक्स पर चल रहे हैं तो आप जानकारी तक नहीं पहुँच सकते क्योंकि केवल अंतिम संशोधित तिथि संग्रहीत है।

यह आपके फाइलसिस्टम थियो पर थोड़ा निर्भर करता है। मुझे पता है कि ext2 और ext3 निर्माण समय का समर्थन नहीं करते हैं लेकिन मुझे लगता है कि ext4 करता है।


-3

मुझे पता है कि यह विषय सुपर पुराना है, लेकिन, यदि कोई व्यक्ति उत्तर की तलाश में है, तो मुझे, मैं अपना समाधान पोस्ट कर रहा हूं।

यह समाधान कार्य करता है यदि आप अपनी फ़ाइल की शुरुआत में कुछ अतिरिक्त डेटा का बुरा नहीं मानते हैं।

मूल रूप से, विचार यह है कि, यदि फ़ाइल मौजूद नहीं है, तो इसे बनाने के लिए और पहली पंक्ति में वर्तमान तिथि को जोड़ दें। इसके बाद, आप पहली पंक्ति के साथ पढ़ सकते हैं fgets(fopen($file, 'r')), इसे किसी DateTimeऑब्जेक्ट या किसी भी चीज़ में बदल सकते हैं (आप स्पष्ट रूप से इसे कच्चे उपयोग कर सकते हैं, जब तक कि आप इसे एक अजीब प्रारूप में नहीं सहेजते हैं) और वॉइला - आपके पास अपनी निर्माण तिथि है! उदाहरण के लिए हर 30 दिनों में मेरी लॉग फ़ाइल को ताज़ा करने के लिए मेरी स्क्रिप्ट इस तरह दिखाई देती है:

if (file_exists($logfile)) {
            $now = new DateTime();
            $date_created = fgets(fopen($logfile, 'r'));
            if ($date_created == '') {
                file_put_contents($logfile, date('Y-m-d H:i:s').PHP_EOL, FILE_APPEND | LOCK_EX);
            }
            $date_created = new DateTime($date_created);
            $expiry = $date_created->modify('+ 30 days');
            if ($now >= $expiry) {
                unlink($logfile);
            }
        }

5
आपको तिथि प्राप्त करने के लिए फ़ाइल को संशोधित करने या हटाने की आवश्यकता क्यों है? यह इस तरह से ध्वनि नहीं करता है मूल समस्या का समाधान है
निको हसे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.