ไฟล์ที่มีการจัดการจะถูกลบหรือไม่หากไม่มีรายการที่เกี่ยวข้องใน file_usage


9

ฉันใช้โมดูลบริการเพื่อใช้งาน REST API ทรัพยากรหนึ่งรายการอนุญาตให้โพสต์พร้อมไฟล์ที่อัปโหลด ในระหว่างการบริการฟังก์ชั่น pre-process ฉันบันทึกไฟล์ไปยังไดเรกทอรีชั่วคราว ระหว่างฟังก์ชั่นบริการหลังการทำงานฉันย้ายไฟล์ไปยังไดเรกทอรีส่วนตัวโทร file_usage_add และบันทึกเอนทิตีโฮสต์ เมื่อเกิดข้อผิดพลาดในการตรวจสอบความถูกต้องระหว่างการบันทึกไฟล์ชั่วคราวและย้ายไฟล์ชั่วคราวไปยังตำแหน่งถาวรฉันไม่ได้ลบไฟล์ชั่วคราวอย่างชัดเจน ฉันคิดว่า drupal cron จะดูแลสิ่งนี้ให้ฉันเนื่องจากไม่มีรายการสำหรับไฟล์นี้อยู่ใน file_usage อย่างไรก็ตามมันไม่ปรากฏว่า cron กำลังดูแลเรื่องนี้ให้ฉัน ความคิดใด ๆ ว่าทำไมถึงเป็นเช่นนี้?

เมื่อตรวจสอบ file_managed ฉันเห็นไฟล์ชั่วคราวที่ฉันต้องการลบ เมื่อตรวจสอบ file_usage ฉันไม่เห็นระเบียนที่เกี่ยวข้อง

อัปเดต - ข้อมูลเพิ่มเติมหนึ่งส่วน: โดยส่วนใหญ่แล้วไฟล์จะหายไป ฉันเชื่อว่านี่เป็นเพราะ OS รีบูตการล้างไดเรกทอรี / tmp ไม่ว่า system_cron จะยังคงลบรายการ file_managed สำหรับไฟล์หรือไม่หากไม่พบไฟล์จริงอีกต่อไป

ปัญหานี้เกิดขึ้นตั้งแต่ฉันเริ่มอัพโหลดไฟล์จากแอพมือถือทั่วไป ชื่อไฟล์จะเหมือนกันทุกครั้งที่อัพโหลด มีบางกรณีที่ชื่อไฟล์ temp ไม่มีอยู่ในไดเรกทอรี / tmp แต่มีการบันทึกใน file_managed ด้วย URI ของชื่อไฟล์นั้น ดังนั้นฉันจึงได้รับข้อผิดพลาด integrity เมื่อตาราง file_managed ถูกบันทึกไว้ ฉันวางแผนที่จะอัปเดตแอปเพื่อสร้างชื่อไฟล์แบบสุ่ม ในระหว่างนี้ฉันต้องการล้างฐานข้อมูลและตรรกะ "กาว" รอบตัวที่จัดการไฟล์เหล่านี้ ถ้า system_cron จะทำทุกอย่างให้ฉันก็ยอดเยี่ยม แต่จากสิ่งที่ฉันสามารถบอกได้ว่า system_cron จะไม่ลบเร็กคอร์ดเก่าที่ไม่ได้ใช้ (และไม่ได้อ้างอิง) ทั้งหมดใน file_managed

คำตอบ:


8

Drupal จะลบไฟล์ชั่วคราวในsystem_cron ()โดยอัตโนมัติ

อย่างไรก็ตามไฟล์ Permament ที่ไม่มี file_usage จะไม่ถูกลบอย่างไรก็ตาม


นั่นคือสิ่งที่ฉันคิดว่า. อย่างไรก็ตามรายการใน file_managed ยังคงมีการแขวนอยู่แม้ว่าจะไม่มีรายการที่สอดคล้องกันใน file_usage และไม่มีไฟล์จริงอีกต่อไป ฉันต้องคิดถึงบางสิ่งบางอย่างที่นี่ ...
lkiss80

3
@ lkiss80 ไฟล์จะไม่ถูกลบเว้นแต่จะมีstatusค่าเป็นศูนย์ในfile_managedตาราง
Clive

4
และต้องมีอายุมากกว่า 6 ชั่วโมง
Berdir

@Clive - ขอบคุณ คำตอบของคุณแจ้งให้ฉันตรวจสอบบิตสถานะอีกครั้ง ตอนแรกฉันอ้างอิงหนังสือที่พลิกความหมายของบิตนี้ไม่ถูกต้อง ขอบคุณอีกครั้ง!
lkiss80
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.