मैं REST API को कार्यान्वित करने के लिए सेवाओं के मॉड्यूल का उपयोग कर रहा हूं। एक संसाधन अपलोड की गई फ़ाइलों के साथ POST की अनुमति देता है। एक सेवा पूर्व-प्रक्रिया फ़ंक्शन के दौरान मैं फ़ाइल को अस्थायी निर्देशिका में सहेजता हूं। सेवाओं की प्रक्रिया के बाद के कार्य के दौरान, मैं फ़ाइल को एक निजी निर्देशिका में स्थानांतरित करता हूं, file_usage_add कॉल करता हूं, और होस्ट इकाई को बचाता हूं। जब अस्थायी फ़ाइल को सहेजने और अस्थायी फ़ाइल को स्थायी स्थान पर ले जाने के बीच एक सत्यापन त्रुटि होती है, तो मैं स्पष्ट रूप से अस्थायी फ़ाइल को हटा नहीं रहा हूं। मैंने सोचा कि ड्रुपल क्रोन मेरे लिए इस बात का ध्यान रखेगा, क्योंकि इस फाइल के लिए कोई भी फाइल file_usage में मौजूद नहीं है। हालाँकि, ऐसा नहीं लगता है कि क्रोन मेरे लिए इसका ख्याल रख रहा है। किसी भी विचार के रूप में यह क्यों है?
जब file_managed की समीक्षा की जाती है, तो मुझे वह अस्थायी फ़ाइल दिखाई देती है जिसे मैं हटाना चाहता / चाहती हूँ। जब file_usage की समीक्षा करते हैं, तो मुझे कोई संगत रिकॉर्ड दिखाई नहीं देता है।
अद्यतन - जानकारी का एक अतिरिक्त टुकड़ा: ज्यादातर मामलों में, फ़ाइल वास्तव में गायब है। मेरा मानना है कि यह ओएस रिबूट / टैम्प डायरेक्टरी को क्लीयर करने के कारण है। इसके बावजूद, क्या system_cron अभी भी एक फ़ाइल के लिए file_managed प्रविष्टि को हटा देगा यदि वास्तविक फ़ाइल अब नहीं मिली?
यह समस्या तब उत्पन्न हुई जब मैंने एक देशी मोबाइल ऐप से फाइलें अपलोड करना शुरू किया। फ़ाइलनाम प्रत्येक अपलोड के समान है। कुछ ऐसे मामले हैं जहां अस्थायी फ़ाइल नाम / tmp निर्देशिका में मौजूद नहीं है, लेकिन फ़ाइल_में प्रबंधित रिकॉर्ड अभी भी उस फ़ाइल नाम के URI के साथ मौजूद है। इसलिए मुझे एक अखंडता त्रुटि मिल रही है जब file_managed तालिका को सहेजा जा रहा है। मैं एक यादृच्छिक फ़ाइल नाम बनाने के लिए ऐप को अपडेट करने की योजना बना रहा हूं। इस बीच, मैं डेटाबेस और आसपास "गोंद" तर्क को साफ करना चाहूंगा जो इन फ़ाइलों का प्रबंधन करता है। अगर system_cron मेरे लिए यह सब करेगा तो बहुत अच्छा। लेकिन मैं जो बता सकता हूं, उससे system_cron पुराने, पूरी तरह से अप्रयुक्त (और अप्रतिबंधित) रिकॉर्डों को file_managed में नहीं निकाल रहा है।