2011-01-11 5 views
45

저는 업로드 스크립트 작업 중입니다.php :: 얼마나 오래 tmp 파일에 머무를까요?

사용자가 파일을 업로드하고 이미 존재하는 경우 사용자에게 경고하고 (이 모든 것은 아약스를 통해 이루어집니다) 대체 할 옵션을 제공하거나 취소합니다.

파일을 이동하는 대신 파일을 tmp에두고 Ajax 응답에서 해당 파일의 경로를 다시 전달할 수 있는지 궁금했습니다.

사용자가 아약스 요청에서 이전 파일을 덮어 쓰면 파일을 계속 작업하는 php로 경로가 전달됩니다. 이를 위해

내가 파일이 PHP 스크립트의 실행을 완료 후 바로 삭제됩니다 POST를 통해 업로드 된 PHP의 tmp를 해줄

+0

, 내가 먼저 확인 - 이미 존재하는 경우, 나는 앞의 숫자와 새 파일의 이름을 바꿀 수 있습니다 파일 이름의 수는 파일 이름의 수에 따라 다릅니다. 갈등이없고 모두가 행복하게 지냅니다. –

+1

ajax 응답에서 tmp의 경로를 다시 전달하면 누군가가 다음 요청을 망쳐 놓고 그 값을 대체하여 다른 곳의 다른 파일을 이동할 수 있음을 의미하지 않습니까? (단지 생각) –

+1

잘 정리하면, 실제로 할 수있는 모든 것은 tmp 디렉토리에서 지정한 디렉토리로 파일을 이동하는 것이며, tmp 디렉토리에 무엇이 있는지 알 수있는 가능성은 있지만, 생각. – Hailwood

답변

60

파일에 켜져있는 시간을 알 필요가 있지만 작동합니다.

에 따르면 php.net : "파일을 이동하거나 이름을 변경하지 않은 경우 요청이 끝날 때 임시 디렉터리에서 파일이 삭제됩니다." 업로드 된 파일의 경우

+0

심지어 html 입력에서 업로드 된 파일입니까? – Hailwood

+0

파일의 출처는 중요하지 않습니다. 또한 - 브라우저의 각 입력은 HTML 하나입니다 ;-) – zerkms

+0

정말요? PHP는 그것을 쓰고 삭제하는 모든 파일을 추적합니까? 나는 그것이 정말로하지 않는다라고 확신한다! 나는 이미지에 대한 요구에 따라 축소판을 생성하는 PHP 스크립트를 가지고 있고 PHP가 스크립트를 실행 한 후에 파일을 삭제하면 축소판이 존재하지 않을 것입니다! –

18

, the manual states : 멀리 를 이동하거나 이름을 변경하지 않은

파일은 요청의 말에 임시 디렉토리에서 삭제됩니다.

보관할 파일을 다른 위치로 이동해야합니다.

더 일반적으로 질문 제목이 의미하는 것처럼 임시 폴더는 시스템에서 정리되도록 남겨 둡니다. tempnam 또는 tmpfile과 같은 함수를 사용하거나 임시 디렉토리에 쓸 때만이 사실입니다 (sys_get_temp_dir 참조).

우분투에서는 시스템을 재부팅 할 때마다 또는 /etc/default/rcS에 정의 된 시간 간격으로이 작업을 수행합니다.

일부 Red Hat 기반 배포판에서는 cronjob의 tmpwatch 유틸리티를 사용합니다. 다른 경우, /tmp 파티션은 RAM 디스크와 유사한 파일 시스템 tmpfs을 사용하여 마운트됩니다 (따라서 컴퓨터가 종료 될 때 청소됩니다).

또 다른 알려진 메커니즘은 크기 임계 값입니다. 즉, 임시 디렉토리가 특정 크기에 도달하면 이전 파일에서 정리됩니다.

0

는/tmp 디렉토리의 쓰레기 수거가 제대로 발생하는지 확인 PHP에서 설정해야하는 세 가지 변수가있다 그리고 그들은 다음과 같습니다

session.gc_maxlifetime = 21600 
session.gc_probability = 1 
session.gc_divisor = 100 

설정의 session.gc_maxlifetime은 초 단위로 당신 각 tmp 파일이 삭제되기 전에 지속되도록하십시오. OpenCart에서 관리자에게 로그인하면 자동으로 로그 아웃 될 때까지의 시간 (초)입니다. 예를 들어 30 분을 설정하려면 30 초를 60 초로하고 1800 초를 입력합니다.

다른 두 변수는 가비지 수집기가 실행될 때와 관련이 있으며 문제가 있으면 위의 값으로 설정하는 것이 중요합니다.

여기

더 많은 정보 : 내가 파일 업로드 도구를 수행 할 때 파일이 서버에 이미있는 경우 https://www.antropy.co.uk/blog/opencart-php-session-tmp-files-filling-up/

+0

이것은 파일 저장 공간을 사용하도록 구성된 PHP 세션에만 해당되며 파일 업로드로 생성 된 임시 파일과는 관련이 없습니다. –

관련 문제