找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
广告投放联系QQ68610888广告投放联系QQ68610888
查看: 936|回复: 0

求助!OpenWrt后台使用luci.http.setfilehandler()函数接收文件上传很慢

[复制链接]
发表于 2024-3-1 10:30 | 显示全部楼层 |阅读模式
OpenWrt版本:23.05;

lua版本:5.1.5;
问题描述:前端上传14MB左右大小的文件,在自己写的luci-mod-admim-QX中的lua中使用luci.http.setfilehandler()接收文件速度只有0.2MB每秒左右,
                  使用top查看性能调用的时候,进程名为“ucode /www/cgi-bin/luci”,CPU占用率高达97%,但是我用之前的老固件上传文件的时候创建的进
                  程名为“{luci} /usr/lib/lua /www/cgi-bin/luci”,上传速度却能达到6MB每秒左右,有大佬能解答一下在下的疑问么,谢谢了;
  1. function systemupdate()  
  2.         local image_tmp = "/tmp/"                                                                                                                                                                                                                                                                                                                                       
  3.         local returnData = {}                                                                                                                                                                     
  4.         local fp                                                                                                                                                                                                                                                                                                                                                  
  5.         nixio.syslog("crit", "setfilehandler")                                                                                                                                                   
  6.         luci.http.setfilehandler(                                                                                                                                                                                
  7.         function(meta, chunk, eof)                                                                                                                                                               
  8.                         if finished then                                                                                                                                                                  
  9.                                         nixio.syslog("crit", "filehandler call after eof")                                                                                                                        
  10.                                         return                                                                                                                                                                    
  11.                         end                                                                                                                                                                              
  12.                         if not fp and meta and (meta.name == "QxFirmware") then                                                                                                                           
  13.                                         fp = io.open(image_tmp .. meta.name .. '.bin', "w")                                                                                                                       
  14.                         end                                                                                                                                                                              
  15.                         if fp and chunk then                                                                                                                                                              
  16.                                         size = #chunk + size                                                                                                                                                      
  17.                                         fp:write(chunk)                                                                                                                                                           
  18.                         end                                                                                                                                                                              
  19.                         if fp and eof then                                                                                                                                                               
  20.                                         fp:close()                                                                                                                                                               
  21.                                         finished = true                                                                                                                                                           
  22.                                         if meta.name == "QxFirmware" then                                                                                                                                         
  23.                                                 returnData.status = "1"                                                
  24.                                         end                                                            
  25.                                         nixio.syslog("crit", "filehandler write %d bytes" % { size })        
  26.                         end                                                                                          
  27.         end                                                                                          
  28.         )                                                                                                
  29.         luci.http.formvalue()                                                                                                                                                           
  30.         luci.http.write_json(returnData)                                                                                                      
  31. end
复制代码




只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /2 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2026-8-23 23:33

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 电话:13506125623

快速回复 返回顶部 返回列表