• 19-06-2008, 22:08:25
    #1
    Merhaba arkadaşlar,

    ftp de yer alan bir klasörün otomotik olarak temizlenmesini istiyorum. örneğin resimler adında bir klasör oluşturdum ve bu resimler klasöründe bulunan dosyaların hafta bir temizlenmesini istiyorum. (.htacces ve index.html hariç)

    Bunu bir php ile yapabilir miyim?
  • 20-06-2008, 02:10:13
    #2
    Kurumsal PLUS
    klasördeki dosyaların(.htaccess ve index.html hariç) silinmesini sağlayan script, çalıştırıldığı an silme işini gerçekleştirir. bu scripte kullanıcıların kazara girmemesi için karışık bir isim vererek cronjob ile haftada bir çalıştırılmasını sağlayabilirsin.

    <?php
    $anadizin = "resimler";
    if ($kaynak = opendir($anadizin)) {
    
    while (false !== ($file = readdir($kaynak))) {
           if ($file != "." AND $file != ".." AND $file != "index.html" AND file !=".htaccess") {
           unlink($anadizin."/".$file);
           }
       }
    }
    ?>
  • 20-06-2008, 02:55:32
    #3
    Üyeliği durduruldu
    function sil($path)
    {
      if( rmdir($path) )
    {
      return mkdir($path, 0755);
    }
    return false;
    }
    pardon bazı dosyalar hariçmiş o zaman bartuc'unkini kullanacaksınız. Yada dosyaları rename komutu ile farklı biryere alıp sonra tekrar taşıyacaksın
  • 20-06-2008, 03:47:30
    #4
    lisans zaten direk rmdir dizin dolu iken çalışmaz
    istersen bi test et
  • 20-06-2008, 06:21:20
    #5
    Bir projemde böyle bir kod yazmam gerekecekti işte bu iyi oldu. Kafa yormam gerekmeyecek . Öncelikle bunun için teşekkürler.

    Ben de ekstra konu açmadan bu konu altında sorayım. Yukarıdaki kodu del.php diye kaydettik varsayarsak hangi komutla cronjob ayarlayabilirim. 3 günde bir belirttiğim dizindeki dosyaları temizleyecek. Panel plesk ve cpanel. İlk kez cronjob kullanacağım için bilgim yok.

    Düzeltme:

    Arkadaşlar yukarıdaki kodun (Bartuc'un kodu) şu haliyle olanını nasıl yapabiliriz?

    GECICI_DIZIN klasörü var ve bu klasör içinde 5 farklı klasör ve index.html dosyası var.

    Bu 5 farklı klasörün içinde de .jpg resimler var ve index.html mevcut her klasörün içinde. Şimdi istediğim kod şöyle olmalı.

    Çalıştığı anda GECICI_DIZIN klasörünün içindeki 5 klasörün içindekileri (ki bunlar .jpg dosyalar) silmeli. Ancak bu 5 klasör içinde bulunan index.html dosyasını silmemeli. Eğer anlayıpta yapabilen varsa paylaşırsa memnun olurum yoksa biraz kafa patlatmak gerekecek
  • 20-06-2008, 13:20:51
    #6
    Ya fazla bişi yapmana gerek yok. Bartucun kodunu accık geliştireceksin. Misal

    <?php
    $dizinler = array("./", "resim1", "resim2", "resim3", "resim4", "resim5");
    
    for($a=0;$a=<count($dizinler);$a++){
    
    	if ($kaynak = opendir($anadizin)) {
    
    		while (false !== ($file = readdir($kaynak))) {
    			if ($file != "." && $file != ".." && substr($file ,-4) == ".jpg") {
    				unlink($anadizin."/".$file);
    			}
    		}
    	}
    
    }
    ?>
    Böle bişi işini görür sanırım. Bu verdiğim kod, çalıştırdığın dizinde ve resim1, resim2 .... klasörlerinin içindeki tüm .jpg uzantılı dosyaları siler. Anladığım kadarıyla istediğin de zaten buydu
  • 12-06-2009, 01:05:46
    #7
    konu eski olsa bile sorun benzer, yeni konuya gerek yok.

    benim istediğim şöyle.

    bu php dosyaso çalıştırıldığı zaman

    belirlediğim klasör içindeki tüm dosyalar için, uzantı önemli değil.

    dosyanın oluşturulma zamanından 6 saat geçmiş ise o dosyayı silecek. server saatine göre karşılaştırma yapacak.

    böyle bir php dosyası gerek.

    ve ben bunu cron ile her saat başı çalıştıracağım.

    nasıl olabilir?
  • 12-06-2009, 01:32:06
    #8
    Üyeliği durduruldu
    PHP: filectime - Manual

    dosyanın oluşturulma zamanını bu fonksiyon ile alabilirsiniz

    zaten time() degeri olarak veridgi için

    6 saat öncesi

    time() - 60 * 60 * 6 olur
  • 12-06-2009, 08:07:39
    #9
    bunu bartuc un verdiği kod ile nasıl birleştirebiliriz?