久久久久av_欧美日韩一区二区在线_国产精品三区四区_日韩中字在线

12下一頁
返回列表 發帖
查看: 3337|回復: 10

[求助] 如何限制附件同時下載的數量和下載的速度

37

主題

137

回帖

217

積分

爐火純青

貢獻
1 點
金幣
14 個
樓主
發表于 2023-6-28 15:19:16 | 只看樓主 |倒序瀏覽 |閱讀模式
如何限制附件同時下載的數量和下載的速度。

比如每個登錄會員只能同時下載3個附件,每個附件的下載速度限制在500kb/s,網頁打開不限制速度。
我看寶塔后臺有一個流量限制,我試了下,并不是很理想,單IP限制小了,打開網頁會有很多圖片不顯示,刷新才顯示。流量限制了,如果同時下載著附件,網頁就會打開非常慢,甚至打不開。


并發限制 * 限制當前站點最大并發數
單IP限制 * 限制單個IP訪問最大并發數


流量限制 * 限制每個請求的流量上限(單位:KB)


我知道答案 回答被采納將會獲得1 貢獻 已有10人回答
回復

使用道具 舉報

14

主題

3415

回帖

5829

積分

應用開發者

貢獻
408 點
金幣
170 個
QQ
沙發
發表于 2023-6-28 16:06:39 | 只看Ta
https://blog.csdn.net/wangshuminjava/article/details/106047194/
參考這個, 限制一下 常見附件文件類型 并發數和帶寬 就可以了
回復

使用道具 舉報

40

主題

3200

回帖

5454

積分

應用開發者

Discuz! 運維

貢獻
215 點
金幣
685 個
QQ
板凳
發表于 2023-6-28 16:09:00 | 只看Ta
回復

使用道具 舉報

37

主題

137

回帖

217

積分

爐火純青

貢獻
1 點
金幣
14 個
地板
 樓主| 發表于 2023-6-28 16:27:16 | 只看Ta
科站網 發表于 2023-6-28 16:09
可以使用流量限制https://addon.dismall.com/plugins/tshuz_attachrate.html

這樣同時下載的人數多,也會影響網站打開速度。
回復

使用道具 舉報

37

主題

137

回帖

217

積分

爐火純青

貢獻
1 點
金幣
14 個
5#
 樓主| 發表于 2023-6-28 16:32:28 | 只看Ta
不知這些還好使嗎?

前些天架設了一個小小的Discuz 6 論壇 ,上面上傳了一些熱門的電子書,相關附件的下載異常火爆。服務器的帶寬不大,有些吃力,就想如何能實現附件的限速下載。本來不懂PHP的,網上倒是有PHP限速下載的代碼。研究了一下Discuz的代碼,實現了一個可行的方案。 很簡單,找到attachment.pnp,找到最下面,有個
function getlocalfile($filename, $readmod = 1, $range = 0)  
改成:
function ?getlocalfile( $filename , ? $readmod ? = ? 1 , ? $range ? = ? 0 )?{
???????? if ( $fp ? = ?@ fopen ( $filename , ? ' rb ' ))?{
????????????@ fseek ( $fp , ? $range );
???????????????? $download_rate ? = ? 10 ; // 限制網速10kb/s
???????????????? while ( ! feof ( $fp ))
???????????????{
?????????????????? print ? fread ( $fp , ? round ( $download_rate ? * ? 1024 ));
?????????????????? flush ();
?????????????????? ob_flush ();
?????????????????? sleep ( 1 );
????????????????}
????????}
????????@ fclose ( $fp );
????@ flush ();?@ ob_flush (); }
  測試效果還比較明顯
回復

使用道具 舉報

5

主題

79

回帖

151

積分

漸入佳境

貢獻
0 點
金幣
57 個
6#
發表于 2023-6-28 18:29:16 | 只看Ta
只能定制插件或者自己修改下載邏輯,直接限制單個用戶下載并發及下載速度,改為文件流下載,參考下面的代碼

  1. // 打開文件流
  2.                         $file = fopen($ziptmp, "r");
  3.                         while (!feof($file)) {
  4.                                 // 發送當前部分文件給瀏覽者
  5.                                 print fread($file, round($download_rate * 1024));//下載速度控制
  6.                                 // flush 內容輸出到瀏覽器端
  7.                                 ob_flush();  //防止PHP或web服務器的緩存機制影響輸出
  8.                                 flush();
  9.                                 // 終端1秒后繼續
  10.                                 sleep(1);
  11.                         }
  12.                         // 關閉文件流
復制代碼


回復

使用道具 舉報

37

主題

137

回帖

217

積分

爐火純青

貢獻
1 點
金幣
14 個
7#
 樓主| 發表于 2023-6-29 08:08:14 | 只看Ta
wk2012 發表于 2023-6-28 18:29
只能定制插件或者自己修改下載邏輯,直接限制單個用戶下載并發及下載速度,改為文件流下載,參考下面的代碼 ...

這是修改哪個文件,放在哪個位置?
回復

使用道具 舉報

40

主題

3200

回帖

5454

積分

應用開發者

Discuz! 運維

貢獻
215 點
金幣
685 個
QQ
8#
發表于 2023-6-29 09:15:05 | 只看Ta
celover 發表于 2023-6-29 08:08
這是修改哪個文件,放在哪個位置?

只限制速度可以安裝:https://addon.dismall.com/?@tshuz_downloadrate.plugin
回復

使用道具 舉報

37

主題

137

回帖

217

積分

爐火純青

貢獻
1 點
金幣
14 個
9#
 樓主| 發表于 2023-6-29 14:59:58 | 只看Ta
科站網 發表于 2023-6-29 09:15
只限制速度可以安裝:https://addon.dismall.com/?@tshuz_downloadrate.plugin

能再加上限制每個會員同時下載數量的限制嗎,比如一個會員同時只能下載2個附件,每個附件下載速度200k
回復

使用道具 舉報

37

主題

137

回帖

217

積分

爐火純青

貢獻
1 點
金幣
14 個
10#
 樓主| 發表于 2023-6-29 15:00:57 | 只看Ta
科站網 發表于 2023-6-29 09:15
只限制速度可以安裝:https://addon.dismall.com/?@tshuz_downloadrate.plugin

如果僅僅是限制下載速度,如果這個會員同時下載幾十個附件,網站速度也有可能給拖垮。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

  • 關注公眾號
  • 有償服務微信
  • 有償服務QQ

手機版|小黑屋|Discuz! 官方交流社區 ( 皖ICP備16010102號 |皖公網安備34010302002376號 )|網站地圖|star

GMT+8, 2025-9-21 05:46 , Processed in 0.078849 second(s), 25 queries .

Powered by Discuz! W1.0 Licensed

Copyright © 2001-2025 Discuz! Team.

關燈 在本版發帖
有償服務QQ
有償服務微信
返回頂部
快速回復 返回頂部 返回列表