亚洲韩日午夜视频,欧美日韩在线精品一区二区三区,韩国超清无码一区二区三区,亚洲国产成人影院播放,久草新在线,在线看片AV色

您好,歡迎來到思海網絡,我們將竭誠為您提供優質的服務! 誠征網絡推廣 | 網站備案 | 幫助中心 | 軟件下載 | 購買流程 | 付款方式 | 聯系我們 [ 會員登錄/注冊 ]
促銷推廣
客服中心
業務咨詢
有事點擊這里…  531199185
有事點擊這里…  61352289
點擊這里給我發消息  81721488
有事點擊這里…  376585780
有事點擊這里…  872642803
有事點擊這里…  459248018
有事點擊這里…  61352288
有事點擊這里…  380791050
技術支持
有事點擊這里…  714236853
有事點擊這里…  719304487
有事點擊這里…  1208894568
有事點擊這里…  61352289
在線客服
有事點擊這里…  531199185
有事點擊這里…  61352288
有事點擊這里…  983054746
有事點擊這里…  893984210
當前位置:首頁 >> 技術文章 >> 文章瀏覽
技術文章

php限制文件下載速度的功能

添加時間:2014-12-30 19:18:39  添加: 思海網絡 

有時候你會出于某種目的而要求把下載文件的速度放慢一些,例如你想實現文件下載進度條功能。限制下載速度最大的好處是節省帶寬,避免瞬時流量過大而造成網絡堵塞。本文將和你分享如何通過php代碼來實現限制文件的下載速度。

首先來看看利用php限制文件下載速度的代碼:

<?php
// 將發送到客戶端的本地文件
$local_file='www.Alixixi.com.zip';
// 文件名
$download_file='your-download-name.zip';
// 設置下載速率(=> 31.2 kb/s)
$download_rate=31.2;
if(file_exists($local_file)&&is_file($local_file)){
    header('Cache-control: private');// 發送 headers
    header('Content-Type: application/octet-stream');
    header('Content-Length: '.filesize($local_file));
    header('Content-Disposition: filename='.$download_file);
    flush();// 刷新內容
    $file=fopen($local_file,"r");
    while (!feof($file)){
        print fread($file,round($download_rate*1024));// 發送當前部分文件給瀏覽者
        flush();// flush 內容輸出到瀏覽器端
        sleep(1);// 終端1秒后繼續
    }
    fclose($file);// 關閉文件流
}else{
    die('Error: 文件 '.$local_file.' 不存在!');
}

下面對以上代碼做一些分析:

上述實例把文件下載速度限制為31.2kb/s,即每秒僅向客戶端發送20.5kb的文件流,直到發送完整個文件為止。如果沒有該限制,那么文件將以流的形式一起發送到客戶端,有多少發送多少,這會出現什么情況?假如文件大小為2m,那么一下子把2m的數據流傳送過去,這將可能導致網絡堵塞而中斷腳本的執行,這種下載方式是不能在實際應用中采用的。

技術方面,首先添加頭文件,聲明Content-Type為application/octet-stream,表示該請求將以流的方式發送,并且聲明Content-Length,即聲明了文件流的大小。在代碼里使用了flush(),flush函數作用是刷新php程序的緩沖,實現print動態輸出。

注意以上檢查文件是否存在是通過file_exists這個函數的,但這個函數只能檢查相對于當前服務器網站目錄里面的文件。

關鍵字:php、文件下載、網絡

分享到:

頂部 】 【 關閉
版權所有:佛山思海電腦網絡有限公司 ©1998-2024 All Rights Reserved.
聯系電話:(0757)22630313、22633833
中華人民共和國增值電信業務經營許可證: 粵B1.B2-20030321 備案號:粵B2-20030321-1
網站公安備案編號:44060602000007 交互式欄目專項備案編號:200303DD003  
察察 工商 網安 舉報有獎  警警  手機打開網站