Giới hạn tốc độ download bằng php

Giới hạn tốc độ download bằng php

/**
* Download with limited speed class file.
*
* i-php group :
* Copyright (c) <2008>,
* Licensed under New BSD License
* @filesource download_limited.php
* @copyright Copyright 2008, i-php group
* @author [email protected]
* @link http://i-php.net/about/
* @since php 5.0
* @version $Revision: 1 $
* @modifiedby $LastChangedBy: habogay $
* @lastmodified $Date: 2008-08-18 09:45:49 -0500 (Sat, 18 Oct 2008) $
* @license http://www.freebsd.org/copyright/freebsd-license.html New BSD Style License
*/

class DownloadLimited
{
/**
* Send the local file to client with limit download rate as user view file name
*
* @param string $localFile file to send
* @param string $userViewFileName filename client will see
* @param float $downloadRate download limit speed in kb/s (ex: 50 kb/s)
* @return no return
*/
function sendFile($localFile,$userViewFileName,$downloadRate)
{
/** check file exists
* @see file_exists
*/
if(!file_exists($localFile))
{
throw new Exception('File not found execption file :'.$localFile.' not found');
}
/** check file is file
* @see is_file
*/
if(!is_file($localFile))
{
throw new Exception($localFile.' not is a file');
}
if(!is_readable($localFile))
{
throw new Exception('file '.$localFile.' not readable ');
}
// send headers
header('Cache-control: private');
header('Content-Type: application/octet-stream');
header('Content-Length: '.filesize($localFile));
header('Content-Disposition: filename='.$userViewFileName);

// flush header content
flush();
// open file stream
$file = fopen($localFile, "r");
while(!feof($file))
{

// send the current file part to the browser
print fread($file, round($downloadRate * 1024));

// !important flush the content to the browser
flush();

// !important sleep one second
sleep(1);
}

// close file stream
fclose($file);


}
/**
* Send the string data to client with limit download rate as user view file name
*
* @param string string data to send include ascii,utf-8 character
* @param string $userViewFileName filename client will see
* @param float $downloadRate download limit speed in kb/s (ex: 50 kb/s)
* @return no return
*/
function sendString($data,$userViewFileName,$downloadRate)
{
// send headers
header('Cache-control: private');
header('Content-Type: application/octet-stream');
header('Content-Length: '.strlen($data));
header('Content-Disposition: filename='.$userViewFileName);
// flush header content
flush();

$start=0;
$sendSize=0;
while($sendSize    {
$sendSize=round($downloadRate*1024);
print substr($data,$start,$sendSize);
$start=$sendSize;
// !important flush the content to the browser
flush();

// !important sleep one second
sleep(1);
}
}

}
?>
Bạn thấy bài viết này như thế nào?: 
No votes yet
Ảnh của Tommy Tran

Tommy owner Express Magazine

Drupal Developer having 9+ year experience, implementation and having strong knowledge of technical specifications, workflow development. Ability to perform effectively and efficiently in team and individually. Always enthusiastic and interseted to study new technologies

  • Skype ID: tthanhthuy

Bình luận (0)

 

Add Comment

Filtered HTML

  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Các thẻ HTML được chấp nhận: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Tự động ngắt dòng và đoạn văn.

Plain text

  • No HTML tags allowed.
  • Các địa chỉ web và email sẽ tự động được chuyển sang dạng liên kết.
  • Tự động ngắt dòng và đoạn văn.
CAPTCHA
This question is for testing whether or not you are a human visitor and to prevent automated spam submissions.

Advertisement

 

jobsora

Dich vu khu trung tphcm

Dich vu diet chuot tphcm

Dich vu diet con trung

Quảng Cáo Bài Viết

 
Number 2: Security 5 lỗi cần tránh trong Drupal Website

Number 2: Security 5 lỗi cần tránh trong Drupal Website

Good security practices protect your site from hacker attacks. In this article we'll look at some methods for reducing security risks on your site. 

CNTT Việt Nam 2011 - Nông dân được ‘lên mây’

CNTT Việt Nam 2011 - Nông dân được ‘lên mây’

Năm 2011 đã trôi qua khá trầm lắng trên thị trường CNTT Việt Nam. Bối cảnh kinh tế khó khăn đã để lại dấu ấn sâu sắc trong bức tranh toàn cảnh.

Dries Buytaert: Một số phản hồi về Drupal 7 từ Japan

Dries Buytaert: Một số phản hồi về Drupal 7 từ Japan

I presented at two Drupal meetups in Japan; spent the week meeting with members of the Drupal community, Drupal agencies, large system integrators (IBM, Accenture, Hitachi, Fujitsu, Ci&T and SIOS)

Công ty diệt chuột T&C

 

Diet con trung