php ile dosya indirme işlemini limitlendirme (turkish tutorial)
utopian-io·@eresbos·
0.000 HBDphp ile dosya indirme işlemini limitlendirme (turkish tutorial)
English Hello to everyone my name is eresbos, - How to create a limit file downloading with php? Türkçe Merhaba arkadaşlar ben eresbos.Bugün sizlere php ile dosya indirme işlemlerinde indirme hızı limiti nasıl konulur onu göstereceğim. - Kodlarımız ; ``` <?php $yerel_dosya = "deneme.zip"; $indirilecek_dosya = "indirilendosya.zip"; $indirme_hizi = 30; if(file_exists($yerel_dosya) && is_file($yerel_dosya)) { header("Content-Type: application/octet-stream"); header("Content-Length: ".filesize($yerel_dosya)); header("Content-Disposition: attachment; filename=" .$indirilecek_dosya); flush(); $dosya = fopen($yerel_dosya, "r"); while(!feof($dosya)) { print fread($dosya, round($indirme_hizi * 1024) ); flush(); sleep(1); } fclose($dosya); }else { echo 'Dosya mevcut degil'; } ?> ```  1- Projemiz için bir tane dosyaya ihtiyacımız var ben 4.36 mb boyutunda deneme.zip olarak oluşturdum ve localhosta attım.Sizde istediğiniz boyutta ve istediğiniz isimde dosya oluşturup localhosta atabilirsiniz.  2- Değişkenlerimizi tanımlayalım; - ```$yerel_dosya = "deneme.zip"``` değişkeni localhostta bulunan dosyamızı tanıtmaya yarıyor.  - ```$indirilecek_dosya = "indirilendosya.zip"``` dosyamızın indirme işlemi tamamlandığınca alacağı ismi tanıtmamızı sağlıyor.  - ```$indirme_hizi = 30;``` indirme limitimizi belirlememizi sağlıyor.Yani saniyede maksimum 30 kilobyte indirmemizi sağlayacak.  3- Dosya kontrolümüzü yapıyoruz.'Eğer dosyamız varsa ve bu klasör değilse' şeklinde koşulumuzu yazıyoruz. ``` if(file_exists($yerel_dosya) && is_file($yerel_dosya)) { ```  4- İndirme işlemini gerçekleştirmek için; - ```header("Content-Type: application/octet-stream");``` burada indirilecek dosyamızın tipini zip olarak belirliyoruz. - ```header("Content-Length: ".filesize($yerel_dosya));``` burada indirelecek dosyamızın boyutunu belirliyoruz. - ```header("Content-Disposition: attachment; filename=" .$indirilecek_dosya);``` burada indirme işlemimizi başlatmak ve indirirken hangi ismi kullanacağımızı belirlemek için yeni bir header yazıyoruz. ``` header("Content-Type: application/octet-stream"); header("Content-Length: ".filesize($yerel_dosya)); header("Content-Disposition: attachment; filename=" .$indirilecek_dosya); ```  5- ```flush();``` tarayıcıya gömme işlemimizi yapıyoruz.  6- ```$dosya = fopen($yerel_dosya, "r");``` dosyamızı açıp parça parça okutma işlemini gerçekleştiriyoruz.  7- ```while(!feof($dosya)) {``` while döngümüzü kuruyoruz, dosyanın sonuna kadar okunup okunmadığını kontrol ediyoruz.  8- ```print fread($dosya, round($indirme_hizi * 1024) );``` dosyamızı okuttuktan sonra 1024 ile çarpıp kilobyte değerini ekrana yazdırıyoruz.  9- Tekrar ```flush();``` methoduyla tarayıcımıza gömüyoruz.  10- ```sleep(1);``` sleep ile 1 saniye bekleme süresi koyuyoruz.  11- ```fclose($dosya);``` burada indirme işlemini tamamladıktan sonra fclose ile açtığımız dosyayı kapatıyoruz.  12- ```}else {``` eğer üçüncü adımda yazdığımız koşul sağlanmıyorsa,  13- ```echo 'Dosya mevcut degil';``` ekrana dosya mevcut değil sonucunu bastırıyoruz. Github link : https://github.com/php/php-src <br /><hr/><em>Posted on <a href="https://utopian.io/utopian-io/@eresbos/php-ile-dosya-indirme-islemini-limitlendirme-turkish-tutorial">Utopian.io - Rewarding Open Source Contributors</a></em><hr/>