2011-10-04 5 views
-1

PHP를 사용하여 30 초 동안 지속되는 특정 이름의 파일을 만든 다음 자기 자신을 삭제할 수 있는지 궁금합니다. tmpfile 및 tmpnme 함수를 살펴 보았지만 올바르게 사용하는 방법을 모르겠습니다.PHP로 임시 파일 페이지 만들기 - 가능합니까?

웹 페이지 A의 버튼을 클릭 한 다음 웹 페이지 B에 30 초 동안 정보를 표시하고 싶습니다. 30 초가 지나면 정보가 변경되거나 완전히 삭제됩니다.

가능합니까?

+5

예, 물론 가능 합니다만, 사용자에게 고유 한 쿼리 문자열이있는 단일 페이지를 사용하고 페이지의 유효성을 검사하지 않는 이유는 무엇입니까? –

+4

[XY 문제] (http://www.perlmonks.org/index.pl?node_id=542341)를 참조하십시오. –

+0

실제로 프로그램을 볼 때 사용됩니다. 나는 버튼을 클릭하고, 별도의 페이지에있는 어떤 것은 프로그램이 읽는 "종료"라고 말하고 자동으로 종료 과정을 거치게된다. – Konzine

답변

1

PHP는 쉽게 임시 파일을 만들 수 있지만 30 초 후에 실제로 제거 할 것입니다. PHP는 cron 또는 at을 통해 일정을 잡을 수 있지만 스케줄러가 아닙니다.

<?php 

$expires = ...insert some timestamp value here...; 

if ($expires < time()) { 
    unlink(__FILE__); 
    header("Location: somewhere else"); 
    exit(); 
} 

... do whatever you need to here ... 

즉 알아서 할게요 :이 시작된 첫째 때 생성 된 스크립트를 확인하실 수 있습니다 만료 시간을 지정으로 구축으로

가장 좋은 방법은 PHP 스크립트에 약간의 추가 코드를 삽입하는 것입니다 스크립트 자체의 종료. 그러나 스크립트가 30 초 밖에 액세스하지 않으면 자체 정리가되지 않으므로 정기적으로 집안일을 할 외부 작업이 필요합니다.

+0

이것은 내가 상상했던 것에 매우 가깝지만 내 머리 위로는 약간 unfrotuntley. 내 생각은 양식과 POST를 사용하고 별도의 페이지에 게시하는 것이 었습니다. 문제는 30 초 후에 종료하거나 기본값으로 다시 변경하기 위해 정보가 필요하다는 것입니다. 어떤 제안? – Konzine

+0

생성 된/자식 스크립트를 죽이기 위해 외부 제거 작업을 예약하기 위해 부모 스크립트에'at' 작업을 추가하게 할 수도 있습니다. 그러나 'at'와 'cron'은 초 단위가 아닌 분 수준으로 만 스케줄 할 수 있으므로 정확히 30 초 후에 자식 스크립트가 중단되는 것을 보장 할 수 없습니다. 그러나 외부 제거 및 내부 시간 확인을 사용하면 쉽게 시뮬레이션 할 수 있습니다. 또 다른 방법은 fork()를 사용하고 자식을 30 초 동안 잠자기 상태로 만든 다음 하위 스크립트의 연결을 끊는 것입니다. –

0

예를 들어 XML과 같은 파일을 만들 수 있습니다. 새 노드를 추가하고 타임 스탬프를 지정하십시오. 그런 다음 웹 사이트에서 파일을로드하고 타임 스탬프에 따라 만료되지 않은 노드를 표시 할 수 있습니다. 이전 데이터를 표시하지 않고 파일을 삭제할 필요는 없습니다. 또한 노드를로드 할 때 이전 노드를 삭제하여 파일이 커지지 않도록 할 수 있습니다.

+0

감사합니다. 내가 이런 식의 예제 나 스크립트를 볼 수있는 아이디어가 있습니까? – Konzine