Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP 파일을 한 번만 실행하고 자동으로 삭제하는 방법

네, 충분히 가능합니다. PHP에서는 unlink() 함수를 활용하면 스크립트가 한 번 실행된 후 스스로를 삭제하도록 만들 수 있습니다. 상황에 따라 선택할 수 있는 두 가지 방법을 소개합니다.

방법 1: unlink() 함수 직접 호출

가장 간단한 방법은 현재 실행 중인 파일의 전체 경로를 담고 있는 매직 상수 __FILE__과 함께 unlink()를 호출하는 것입니다.

<?php unlink(__FILE__); ?>

이 코드가 실행되면 PHP는 현재 실행 중인 파일 자체를 파일 시스템에서 즉시 삭제합니다. 다만 이 위치 이후의 코드는 더 이상 의미가 없어지므로, 일반적으로 스크립트의 마지막 줄에 배치하는 것이 좋습니다.

방법 2: 소멸자(Destructor)를 활용한 확실한 삭제

스크립트 도중에 exit()die()가 호출되더라도 파일 삭제를 반드시 보장하고 싶다면, 클래스의 소멸자를 이용하는 방법이 더 안전합니다.

class DeleteOnExit {
    function __destruct() {
        unlink(__FILE__);
    }
}
$delete_on_exit = new DeleteOnExit();

위 코드에서는 DeleteOnExit 클래스의 인스턴스가 생성되고, 스크립트가 종료되는 시점에 PHP 엔진이 자동으로 __destruct() 메서드를 호출합니다. 소멸자는 exit() 호출 여부와 관계없이 항상 실행되기 때문에, 어떤 경로로 스크립트가 끝나더라도 파일 삭제가 보장됩니다.

사용 시 주의 사항

  • 파일 권한 확인: 웹 서버 프로세스(예: www-data, apache)가 해당 파일이 위치한 디렉터리에 쓰기 권한을 가져야 삭제가 정상적으로 동작합니다.
  • 적절한 용도: 일회성 설치 스크립트, 초기 설정 파일, 임시 작업 스크립트 등에 유용합니다.
  • 사전 테스트 필수: 실수로 중요한 파일이 삭제되지 않도록 운영 환경 적용 전에 테스트 환경에서 충분히 검증하는 것이 좋습니다.
  • 캐싱 환경: OPcache 등이 활성화된 환경에서는 이미 로드된 코드가 계속 실행될 수 있으므로 실제 동작을 확인한 후 사용하세요.

정리하면, 간단한 경우에는 unlink(__FILE__) 한 줄로 해결할 수 있고, 종료 시점과 관계없이 삭제를 보장해야 한다면 소멸자 기반 접근 방식이 더욱 안정적인 선택입니다.