PHP Dersleri

PHP İle Klasördeki Tüm Dosyaları Silme

Bu eğitimde, PHP ile belirlenen klasördeki tüm dosyaların nasıl silineceğinden bahsedeceğim. Silme işlemini gerçekleştirmek için ilk olarak belirlenen klasörün içerisinde yer alan dosyaları listelendirmek gerekiyor. Listelenen dosyaları da silme işlemi oldukça kolay. Yapacağımız bu örneği de nerelerde kullanırız gibi bir soru aklınıza takılmışsa aşağıdaki maddeleri inceleyebilirsiniz.

  • Web sunucusunda yer açmak için klasördeki tüm dosyaları silmek gerekebilir.
  • Belirli bir uzantıya sahip olan dosyaların silinmesi gerekebilir.
  • Belirli bir süreden sonraki işlevsiz dosyalar silinmek istenebilir.
  • Ve daha bir çok neden.

Bu nedenleri saymakla bitmez aslında. En çok akla gelen ve kullanılma ihtiyacı duyulan nedenleri sizler için nasıl gerçekleştirileceğinden bahsedeceğim.

Listeleme ve silme işlemleri için glob() fonksiyonu ve unlink() fonksiyonu kullanılmaktadır. Bu fonksiyonlar temel olarak kullanılarak listeleme ve silme işlemi gerçekleştirilir. Yapılan işlemler için farklı amaçlar ve özellikler eklenecek olursa bu kurallar temel tutularak düzenlenir.

Klasördeki Tüm Dosyaları Silme

Belirlenen klasördeki tüm dosyaları silmek oldukça basit ve düz bir işlemden oluşmaktadır. Belirlenen klasör içerisindeki dosyaları listelendirmek için glob() fonksiyonu kullanılır. Dosyalar dizi(array) olarak çıktı verileceği için bir döngü kullanmak gerekecektir. Belirlenen dosyaları silmek içinde unlink() fonksiyonu kullanılmaktadır.

<?php
// Sil klasörünün içerisindekileri alıyoruz.
$klasor = glob('sil/*');
// dosyaları listeledik
foreach($klasor as $dosya){
   // dosyaları aldık
   if( is_file($dosya) ){
      // dosyayı sildik
      unlink($dosya);
   }
}
?>

Bu kodlara birlikte sil klasörünün içerisinde yer alan tüm dosyalar silinecektir. Eğer bu klasör içerisinde bir klasör varsa silinmeyecektir. Aynı zamanda o klasörün içerisindeki dosyalar da silinmeyecektir. Silme işlemi sadece sil klasörü içerisindeki dosyalarda olacaktır.

Klasördeki Belirli Türdeki Dosyaları Silme

Dosya silme işleminde belirli filtreler atılabilir. Örneğin, belirlenen klasör içerisindeki TXT dosyalarının silinmesini isteyebilirsiniz. Yada klasör içerisindeki PNG dosyalarının silinmesini isteyebilirsiniz. Bu gibi filtreleri atmak için glob() foksiyonunda tanımlama yapmak yeterli olacaktır.

<?php
// Sil klasörünün içerisindekileri alıyoruz.
$klasor = glob('sil/*.png');
// dosyaları listeledik
foreach($klasor as $dosya){
   // dosyaları aldık
   if( is_file($dosya) ){
      // dosyayı sildik
      unlink($dosya);
   }
}
?>

Yukarıda yer alan örnekte, glob() fonksiyonu kullanılırken sil/*.png ifadesi parametre olarak gönderilmektedir. Gönderilen bu parametre, sil klasörünün içerisinde yer alan tüm PNG dosyalarının taranmasını sağlayacaktır. Tarama işlemiyle birlikte unlink() fonksyionu kullanılarak silme işlemi gerçekleştirilecektir.

Klasördeki Eski Dosyaları Silme

Dosya listeleme sonrasında belirli bir tarihten önce dosyaları silebilirsiniz. Bununla birlikte, dosya listelemesi yapılırken de tür için filtreleme de yapabilirsiniz. Örnek olarak tüm dosyaları listeleyip, belirli tarihten sonrakini sileceğiz.

<?php
// Sil klasörünün içerisindekileri alıyoruz.
$klasor = glob('sil/*');
// dosyaları listeledik
foreach($klasor as $dosya){
   // dosya tarih bilgisi
   $dosyaTarihi   = filemtime($dosya);
   // şimdiki zaman
   $simdikiZaman  = time();
   // saatlik olarak değerleri aldık
   $fark          = abs($currentTime - $lastModifiedTime) / (60*60);
   // dosyaları ve 10 saatten öncekileri listele
   if( is_file($dosya) AND $fark > 10 ){
      // dosyayı sildik
      unlink($dosya);
   }
}
?>

Bu kodlarla birlikte, sil klasöründe yer alan tüm dosyalar listelenecektir. Listelenen bu dosyalarin oluşturulma tarihleri alınarak 10 saat önce oluşturulan dosyaların silinmesi sağlanacaktır.

Basit olarak görünen klasördeki dosyaları silme işlemini, filtreler uygulayarak daha işlevsel hale getirebilirsiniz. Bu gibi bir çok örneği yine geliştirebilirsiniz.

Daha Fazla Göster

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Kapalı