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

Discuz! 官方交流社區

標題: 如何限制附件同時下載的數量和下載的速度 [打印本頁]

作者: celover    時間: 2023-6-28 15:19
標題: 如何限制附件同時下載的數量和下載的速度
如何限制附件同時下載的數量和下載的速度。

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


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


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



作者: 天外飄仙    時間: 2023-6-28 16:06
https://blog.csdn.net/wangshuminjava/article/details/106047194/
參考這個, 限制一下 常見附件文件類型 并發數和帶寬 就可以了
作者: 科站網    時間: 2023-6-28 16:09
可以使用流量限制https://addon.dismall.com/plugins/tshuz_attachrate.html
作者: celover    時間: 2023-6-28 16:27
科站網 發表于 2023-6-28 16:09
可以使用流量限制https://addon.dismall.com/plugins/tshuz_attachrate.html

這樣同時下載的人數多,也會影響網站打開速度。
作者: celover    時間: 2023-6-28 16:32
不知這些還好使嗎?

前些天架設了一個小小的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 (); }
  測試效果還比較明顯
作者: wk2012    時間: 2023-6-28 18:29
只能定制插件或者自己修改下載邏輯,直接限制單個用戶下載并發及下載速度,改為文件流下載,參考下面的代碼

  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.                         // 關閉文件流
復制代碼



作者: celover    時間: 2023-6-29 08:08
wk2012 發表于 2023-6-28 18:29
只能定制插件或者自己修改下載邏輯,直接限制單個用戶下載并發及下載速度,改為文件流下載,參考下面的代碼 ...

這是修改哪個文件,放在哪個位置?
作者: 科站網    時間: 2023-6-29 09:15
celover 發表于 2023-6-29 08:08
這是修改哪個文件,放在哪個位置?

只限制速度可以安裝:https://addon.dismall.com/?@tshuz_downloadrate.plugin
作者: celover    時間: 2023-6-29 14:59
科站網 發表于 2023-6-29 09:15
只限制速度可以安裝:https://addon.dismall.com/?@tshuz_downloadrate.plugin

能再加上限制每個會員同時下載數量的限制嗎,比如一個會員同時只能下載2個附件,每個附件下載速度200k
作者: celover    時間: 2023-6-29 15:00
科站網 發表于 2023-6-29 09:15
只限制速度可以安裝:https://addon.dismall.com/?@tshuz_downloadrate.plugin

如果僅僅是限制下載速度,如果這個會員同時下載幾十個附件,網站速度也有可能給拖垮。
作者: 科站網    時間: 2023-6-29 15:00
celover 發表于 2023-6-29 14:59
能再加上限制每個會員同時下載數量的限制嗎,比如一個會員同時只能下載2個附件,每個附件下載速度200k ...

不能,還會增加數據庫讀取,而且這玩意不會實時,不準




歡迎光臨 Discuz! 官方交流社區 (http://www.9999xn.com/) Powered by Discuz! W1.0