ฉันใช้โมดูลบริการเพื่อใช้งาน 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