• 08-01-2008, 22:15:49
    #1
    Sisteme yüklenen bir dosyanın belli bir tarih sonrasında silinmesini nasıl sağlayabilirim , örneği 10 gün ya da 20 saat sonra ...

    Php bilgim çok iyi değil sanıyorum sql kullanılması da gerekicek , bana bir yol gösterirseniz devamını halletmeye çalışacağım.Tavsiyeleriniz nelerdir.
  • 08-01-2008, 23:29:34
    #2
    Dosyaları eklerken time(); ile eklenme zamanını kaydet. (Yoksa) Sonra aşağıdaki kodlardan birini belli aralıklarla çalıştır.

    10 gün sonra silinir;
    $zamanasimi = time()-864000;
    mysql_query("Delete From dosya_tablom where zaman < $zamanasimi");

    20 saat sonra silinir;
    $zamanasimi = time()-72000;
    mysql_query("Delete From dosya_tablom where zaman < $zamanasimi");
  • 08-01-2008, 23:40:17
    #3
    Sanırım arkadaş veritabanından veri değil de sunucuya yüklenen dosyanın sunucudan silinmesini istiyor.

    Zaman aşımı olayını ErsaT'ın mantığı ile bir if döngüsü yapıp, unlink() fonksiyonu ile dosyaları silebilirsin. (hiç denemedim)
  • 08-01-2008, 23:45:15
    #4
    Cronjob bu iş için daha uygun değil mi ? Bu şekilde dosya eklenmezse silinmez. Ama sık sık ekleniyorsa sorun yok tabii
  • 08-01-2008, 23:52:35
    #5
    <?php
    $zamanasimi = time()-864000; 
    $sonuc = mysql_query("Select dosya_id, dosya_ismi From dosya_tablom where zaman < $zamanasimi");
    $sayi = mysql_num_rows($sonuc);
    if($sayi !=0){
    	$satir = mysql_fetch_array($sonuc);
    	$dosyam = $satir['dosya_ismi'];
    	$dosya_id = $satir['dosya_id'];
    	unlink('dosyalarim/'.$dosyam);
    	mysql_query("Delete From dosya_tablom where dosya_id=$dosya_id"); 
    }
    ?>
    Şöyle birşey olurmu acaba.
  • 09-01-2008, 02:20:53
    #6
    Hepinize teşekkürler, kullandığım sistemde Sql yok , sadece dosyalar yükleniyor rewrite ile html formatında kullanıcıya sunuluyor.Şimdi her dosya için bir txt oluştursak olmaz , Ersat ın dediği gibi veritabanı oluşturup ordan takip edicez sanırım.Sql den anLamıyorum yanLız.

  • 09-01-2008, 11:12:39
    #7
    Kimlik doğrulama veya yönetimden onay bekliyor.
    filemtime İle dosyanın Oluşturulma zamanına bak unlink ile dosyayı sil
  • 09-01-2008, 13:09:09
    #8
    unlink olayını biliyorum hatta kullanıyorum fakat filemtime nasıl olacak..Bira baktım ayrıca filemtime(), bir dosyanın son değiştirildiği tarihi; filectime(), ise oluşturulduğu tarihi belirtir diyor hangisi doğru

    şöyLe bir şey yaptım ama doğruluğu ne derece

    <?php
    
    $dosyaadi = 'dosya.txt';
    if (file_exists($dosyaadi)) {
        echo "$dosyaadi bla bla bla: " . date ("F d Y H:i:s.", filectime($dosyaadi));
    }
    ?>
    filecmi filem mi
  • 09-01-2008, 14:26:17
    #9
    <?php
    $dosyam = 'dosya.txt';
    if(file_exists($dosyam)){
    	$zamanasimi = time()-864000;
    	$zaman = filectime($dosyam);
    		if($zaman < $zamanasimi){
    			unlink($dosyam);
    		}
    }
    ?>
    Şu haliyle dosyanın ilk oluşturulduğu tarihi kontrol eder. Değiştirildiği yada oluşturulduğu tarih buna sen karar vermelisin. Normal düşünülürse oluşturulduğu tarih daha mantıklı.