file_usage에 해당 항목이 없으면 관리되는 파일이 삭제됩니까?


9

서비스 모듈을 사용하여 REST API를 구현하고 있습니다. 하나의 리소스는 업로드 된 파일이있는 POST를 허용합니다. 서비스 전처리 기능 중에 파일을 temp 디렉토리에 저장합니다. 서비스 사후 처리 기능 중에 파일을 개인 디렉토리로 이동하고 file_usage_add를 호출하고 호스트 엔티티를 저장합니다. 임시 파일을 저장하고 임시 파일을 영구 위치로 이동하는 사이에 유효성 검사 오류가 발생하면 임시 파일을 명시 적으로 삭제하지 않습니다. file_usage 에이 파일에 대한 항목이 없으므로 drupal cron 이이를 처리 할 것이라고 생각했습니다. 그러나 cron이 나를 위해 이것을 돌보는 것처럼 보이지 않습니다. 이것이 왜 그런지에 대한 생각?

file_managed를 검토 할 때 삭제하려는 임시 파일이 표시됩니다. file_usage를 검토 할 때 해당 레코드가 표시되지 않습니다.

업데이트-하나의 추가 정보 : 대부분의 경우 파일이 실제로 없습니다. OS 재부팅으로 인해 / tmp 디렉토리가 지워진 것 같습니다. 그럼에도 불구하고 실제 파일을 더 이상 찾을 수 없으면 system_cron이 파일의 file_managed 항목을 계속 제거합니까?

기본 모바일 앱에서 파일을 업로드하기 시작한 이후이 문제가 발생했습니다. 파일 이름은 업로드 할 때마다 동일합니다. temp 파일 이름이 / tmp 디렉토리에없는 경우도 있지만 file_managed의 레코드가 해당 파일 이름의 URI와 함께 여전히 존재합니다. file_managed 테이블을 저장할 때 무결성 오류가 발생합니다. 임의의 파일 이름을 만들도록 앱을 업데이트 할 계획입니다. 그동안 데이터베이스와 이러한 파일을 관리하는 주변 "접착제"논리를 정리하고 싶습니다. system_cron이 나를 위해 모든 것을 할 것이라면 좋습니다. 그러나 내가 알 수 있듯이 system_cron은 file_managed에서 완전히 사용되지 않은 (그리고 참조되지 않은) 오래된 레코드를 제거하지 않습니다.

답변:


8

Drupal은 system_cron () 에서 임시 파일을 자동으로 삭제합니다 .

그러나 file_usage가없는 영구 파일은 삭제되지 않습니다.


그것이 내가 생각했던 거죠. 그러나 file_usage에 해당하는 항목이없고 실제 파일이 더 이상 존재하지 않더라도 file_managed의 항목이 여전히 걸려 있습니다. 나는 여기서 뭔가를 놓치고 있어야한다.
lkiss80

3
@ lkiss80 테이블 status에 0 이 없으면 파일이 삭제되지 않습니다.file_managed
Clive

4
또한 6 시간 이상이어야합니다.
Berdir

@Clive-감사합니다. 귀하의 응답으로 상태 비트를 두 번 확인하라는 메시지가 표시되었습니다. 나는 원래이 비트의 의미를 잘못 뒤집은 책을 참조했다. 다시 감사합니다!
lkiss80
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.