婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > PHP下載大文件失敗并限制下載速度的實例代碼

PHP下載大文件失敗并限制下載速度的實例代碼

熱門標簽:開發地圖標注類網站 外呼系統能給企業帶來哪些好處 廣東廣州在怎么申請400電話 咸寧銷售電銷機器人系統 百度地圖怎樣標注圖標 百度地圖標注偏差 余姚電話機器人 電銷機器人問門薩維品牌my 400電話蘭州申請請

1.問題:

PHP在使用readfile函數定義下載文件時候,文件不可以過大,否則會下載失敗,文件損壞且不報錯;

2.原因:

這個是因為readfile讀取文件的時候會把文件放入緩存,導致內存溢出;

3.解決:分段下載,并限制下載速度;

?php
//設置文件最長執行時間
set_time_limit(0);

if (isset($_GET['filename'])  !empty($_GET['filename'])) {
  $file_name = $_GET['filename'];
  $file = __DIR__ . '/assets/' . $file_name;
} else {
  echo 'what are your searching for?';
  exit();
}

if (file_exists($file)  is_file($file)) {
  $filesize = filesize($file);
  header('Content-Description: File Transfer');
  header('Content-Type: application/octet-stream');
  header('Content-Transfer-Encoding: binary');
  header('Accept-Ranges: bytes');
  header('Expires: 0');
  header('Cache-Control: must-revalidate');
  header('Pragma: public');
  header('Content-Length: ' . $filesize);
  header('Content-Disposition: attachment; filename=' . $file_name);

  // 打開文件
  $fp = fopen($file, 'rb');
  // 設置指針位置
  fseek($fp, 0);

  // 開啟緩沖區
  ob_start();
  // 分段讀取文件
  while (!feof($fp)) {
    $chunk_size = 1024 * 1024 * 2; // 2MB
    echo fread($fp, $chunk_size);
    ob_flush(); // 刷新PHP緩沖區到Web服務器
    flush(); // 刷新Web服務器緩沖區到瀏覽器
    sleep(1); // 每1秒 下載 2 MB
  }
  // 關閉緩沖區
  ob_end_clean();
  fclose($fp);
} else {
  echo 'file not exists or has been removed!';
}
exit();

總結

以上所述是小編給大家介紹的PHP下載大文件失敗并限制下載速度的實例代碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!

您可能感興趣的文章:
  • PHP大文件分割分片上傳實現代碼
  • PHP大文件及斷點續傳下載實現代碼
  • php實現斷點續傳大文件示例代碼
  • PHP超低內存遍歷目錄文件和讀取超大文件的方法
  • 詳解PHP多個進程配合redis的有序集合實現大文件去重
  • PHP如何通過表單直接提交大文件詳解
  • PHP大文件分片上傳的實現方法
  • php下載遠程大文件(獲取遠程文件大小)的實例
  • 詳解PHP如何讀取大文件

標簽:重慶 巴彥淖爾 衡陽 鷹潭 十堰 臨沂 麗江 銅陵

巨人網絡通訊聲明:本文標題《PHP下載大文件失敗并限制下載速度的實例代碼》,本文關鍵詞  PHP,下載,大,文件,失敗,并,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP下載大文件失敗并限制下載速度的實例代碼》相關的同類信息!
  • 本頁收集關于PHP下載大文件失敗并限制下載速度的實例代碼的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 额敏县| 内江市| 子洲县| 茶陵县| 龙里县| 马鞍山市| 苏尼特右旗| 同心县| 贞丰县| 新营市| 嫩江县| 方正县| 宁陕县| 瑞昌市| 遂溪县| 辽宁省| 石景山区| 岳池县| 武冈市| 施甸县| 永川市| 咸阳市| 藁城市| 保亭| 泊头市| 平泉县| 岫岩| 托克逊县| 青川县| 当阳市| 富川| 长岭县| 永登县| 庆云县| 南江县| 张家口市| 新兴县| 江永县| 黄陵县| 囊谦县| 古丈县|