• 02-01-2011, 17:31:10
    #1
    Üyeliği durduruldu
    Merhaba arkadaşlar

    bayadır merak ettiğim bir konuydu sabahtan beri bakmadığım yer kalmadı yapamadım yapmak istediğim

    xx.xx.xx.x ip adresli kullanıcı benim sitemden o anda dosya indiriyormu kontrol etmek

    bu upload sitelerinde o anda dosya indirirken başka dosya indirememek gibi

    sizin fikirleriniz nedir ? beyin fırtınası yapalım
  • 02-01-2011, 17:33:52
    #2
    en basit download başladıgında kullanıcının ipsini limitle birlikte zamani ( time() + zaman aşımı süresi ) bir tabloda 2 stun oluşturupyazdirip kontrol ettirtmek diye düşünüyorum
  • 02-01-2011, 17:36:31
    #3
    Üyeliği durduruldu
    oop adlı üyeden alıntı: mesajı görüntüle
    en basit download başladıgında kullanıcının ipsini limitle birlikte zamani ( time() + zaman aşımı süresi ) bir tabloda 2 stun oluşturupyazdirip kontrol ettirtmek diye düşünüyorum
    100 mb dosyayı 8mbit internete sahip olan 5 dk'da indirdi diyelim

    100 mb dosyayı 2 mbit internete sahip olan 10 dk'da indirir

    zaman aşımınıda 3 dk belirledik

    sonuçta 8bit olan bitirir ve hemen 2.dosyayı indirir

    2mbit beklemek zorunda kalır hiç adil olmaz
  • 02-01-2011, 17:44:05
    #4
    uNFearLesS adlı üyeden alıntı: mesajı görüntüle
    100 mb dosyayı 8mbit internete sahip olan 5 dk'da indirdi diyelim

    100 mb dosyayı 2 mbit internete sahip olan 10 dk'da indirir

    zaman aşımınıda 3 dk belirledik

    sonuçta 8bit olan bitirir ve hemen 2.dosyayı indirir

    2mbit beklemek zorunda kalır hiç adil olmaz
    konuyu yanlış anlamışım alt kısmı okumadan yazdım, genelde bu sistemler ücretsiz dosya indirenlere süre limitlemesi yaptığı için.
  • 02-01-2011, 20:55:25
    #5
    Eposta Aktivasyonu Gerekmekte
    Php ile nasıl yapılır yada yapılabilinirmi pek bilgim yok ama , upload sitelerinin çoğu , asenkron şekilde istenilen dosyayı belli paketlere ayırıp parça parça gönderiyor.
    Yani talep edilen dosyayı kendi içinde minik paketlere bölüyor ve paket paket gönderiyor. Eğer herhangi bir paket gönderiminde problem oluşur ise sadece o paketi geri gönderiyor ve hem bandwich'ten zararı düşürüyor hemde zamanı baştan başlatmak zorunda kalmıyor.tüm son paket gönderildiğindede tüm paketleri birleştiriyor.
    Bunu nasıl yapıyor derseniz işte orda tam detaylı bilgi sahibi olmamakla birlikte client taraftada işlemler yapmanız gerektiği konusunda bir fikir verebilirim. Dolayısıyla php tek başına yetmiyebilir ki yetmez.

    Sadece sunucu tarafında bu işi halletmek zor. client tarafta dosyayı alan kullanıcının dosya alım saatini bağlantı hızını dosyanın hangi paketlerinin gönderildiğini, eğer giden paketlerden biri problemli ulaşmış ise yada ulaşamamış ise restore edilebilirliğini yada yeniden gönderilmesini ... gibi durumları kontrol etmek gerekiyor. Buda client tarafta da bilgileri tutmamız gerektiğini gösteriyor.

    Session başlat - Dosyayı parçala - Paketleri gönder - Paketleri birleştir - Sessionu kapat.
    Eğer başlangıç süresini ve bitiş süresini de, ip adresi ile birlikte veritabanında tutarsan clientın yeni talebinde , önceden dosya talep edip etmediğini bilir , ona göre işlem yaptırırsın.

    Aklıma şuan bunlar geliyor. Birde silverlight ile bu paketlemeyi anlatan bir örnek eğitim videosunu veriyim faydası dokunur. Hiç değilse biraz fikir verir.

    Sitede aşağı kısımlarda Görsel Dersler kısımında ilk sırada Silverlight Upload videosu fikir verebilir.
    http://daron.yondem.com/tr/formatpag...tv.format.html
  • 02-01-2011, 21:53:52
    #6
    bir sezon aç dosya işlemi bitinceye kadar download işlemide bitince sezonu veritabanından sildir.
  • 02-01-2011, 21:57:31
    #7
    en basidinden her işlem yapıldığında cookie yolla süre ayarlı, süre bitmeden işlem biterse işlem bittiğinde cookie sildir, cookie doluysa işlem yapamasın
    edit: dosya indirme bittiğinde nasıl php bilgisi alınır bilgim yok o konuda ama
  • 02-01-2011, 22:55:20
    #8
    en basit örnek hotfile, 1mb da indirsen 60DK 100mb da indirsen 60Dk beklemen lazım
    rapidshare dosya boyutunun büyüklüğüne göre veriyor süre limitini.
    bir tablo açarsın ve içine
    ip
    son_indirme
    adında iki sütun oluşturup
    php nin Header parametreleri ve fileread fonksiyonunu kullanarak dosyayı çekersin,

    yabancı bir siteden bulduğum kod, bu txt dosyasından okutuyor
    if ($_SERVER['REQUEST_METHOD']=='GET' && $_GET['download']==='1')
    {
            $handle = fopen('lastdownload.txt','rw');
            $date = @fread($handle,filesize('lastdownload.txt'));
    
            if (time() - 30 * 60 > $date)
            {
            fwrite($handle,time());
            header('Content-type: application/zip');
            header('Content-Disposition: attachment; filename="dwnld_'.date('d_m_Y_H_i',filemtime('download.zip')).'.zip"');
            readfile('download.zip');
            }
    
            exit;
    }
  • 02-01-2011, 23:10:46
    #9
    Eposta Aktivasyonu Gerekmekte
    Sorun başlaması yada ip numarası değil. Sorun kişi downloadı devam ettiği sürece yeni istekte bulumasına engel olmak veya ilk isteğin ne zaman sonlandırıldığını bulmak.

    Her site süre kısıtlamalı vermiyor bazıları indirme bitince yeni istekte bulunmaya izin veriyor. Bunu anlayabilmek için isteğin işleyişini tamamen kontrol altında tutmak gerekir tahminimce.

    Yani koda demelisinizki;
    Kullanıcı talebini göndermeye başladığında istek tamamlanana kadar yeni bir talepte bulunmasını engelle. İstek tamamlanınca xx süre kadar beklet ve yeni istek için izin ver.

    Javascript ilede bişeler yapmalısınız. En basitinden setInterval ile bir fonksiyon yazarsınız. kullanıcının talebini belirli bir süre vererek o fonksiyonun kontrol etmesini sağlarsınız. İstek başladığında fonksiyonun çalıştırırsınız ve belirttiğiniz aralıklarla istemciyi kontrol edip isteğin sona erip ermediğini denetlersiniz ve ona göre işlemler yaparsınız. Ancak isteğin ne kadarı tamamlanmış yada sonlanmışmı bu durumu php ile nasıl kontrol edersiniz onu bilemiyeceğim.