Các tệp được quản lý sẽ bị xóa nếu không có mục tương ứng tồn tại trong file_usage?


9

Tôi đang sử dụng mô-đun dịch vụ để triển khai API REST. Một tài nguyên cho phép POST với các tệp được tải lên. Trong chức năng tiền xử lý dịch vụ, tôi lưu tệp vào thư mục tạm thời. Trong chức năng xử lý hậu dịch vụ, tôi di chuyển tệp vào một thư mục riêng, gọi file_usage_add và lưu thực thể máy chủ. Khi xảy ra lỗi xác thực giữa việc lưu tệp tạm thời và di chuyển tệp tạm thời đến một vị trí cố định, tôi không xóa rõ ràng tệp tạm thời. Tôi nghĩ rằng cron drupal sẽ chăm sóc điều này cho tôi, vì không có mục nào cho tập tin này tồn tại trong file_usage. Tuy nhiên, có vẻ như cron đang chăm sóc điều này cho tôi. Bất kỳ suy nghĩ như tại sao điều này là?

Khi xem lại file_managed, tôi thấy tệp tạm thời mà tôi muốn xóa. Khi xem lại file_usage, tôi không thấy bất kỳ bản ghi tương ứng nào.

Cập nhật - Một phần thông tin bổ sung: trong hầu hết các trường hợp, tệp thực sự bị thiếu. Tôi tin rằng điều này là do hệ điều hành khởi động lại xóa thư mục / tmp. Bất kể, system_cron vẫn xóa mục nhập file_managed cho một tệp nếu tệp thực tế không còn được tìm thấy?

Vấn đề này phát sinh kể từ khi tôi bắt đầu tải lên các tệp từ một ứng dụng di động gốc. Tên tệp giống nhau mỗi lần tải lên. Có một số trường hợp tên tệp tạm thời không tồn tại trong thư mục / tmp, nhưng một bản ghi trong file_managed vẫn tồn tại với một URI của tên tệp đó. Vì vậy, tôi nhận được một lỗi toàn vẹn khi bảng file_managed đang được lưu. Tôi có kế hoạch cập nhật ứng dụng để tạo một tên tệp ngẫu nhiên. Trong lúc này, tôi muốn dọn sạch cơ sở dữ liệu và logic "keo" xung quanh để quản lý các tệp này. Nếu system_cron sẽ làm tất cả cho tôi thì thật tuyệt. Nhưng từ những gì tôi có thể nói, system_cron không xóa các bản ghi cũ, hoàn toàn không được sử dụng (và không được ước tính) trong file_managed.

Câu trả lời:


8

Drupal tự động xóa các tệp tạm thời trong system_cron () .

Tuy nhiên, các tệp không có file_usage sẽ không bị xóa.


Đó là những gì tôi nghĩ. Tuy nhiên, các mục trong file_managed vẫn bị treo xung quanh, mặc dù không có mục tương ứng nào tồn tại trong file_usage và không còn tệp thực sự tồn tại nữa. Tôi phải thiếu thứ gì đó ở đây ...
lkiss80

3
@ lkiss80 Tệp sẽ không bị xóa trừ khi có statussố 0 trong file_managedbảng
Clive

4
Và ngoài ra, phải lớn hơn 6 giờ.
Berdir

@Clive - Cảm ơn. Phản hồi của bạn nhắc tôi kiểm tra lại bit trạng thái. Ban đầu tôi đã tham khảo một cuốn sách lật không chính xác ý nghĩa của bit này. Cảm ơn một lần nữa!
lkiss80
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.