我的场景是这样的:在嵌入式设备上,我们有一个使用Lighttpd和基于CGICC的应用程序的Web界面。上传新固件需要花费大量时间,尤其是CPU负载过重(这是现场操作中的典型情况)。例如,从"顶部"以 80% 的 CPU 使用率运行,上传需要 5-10 分钟(!),关闭服务只需要 1 分钟。
因此,我必须实现一些允许我在文件上传开始之前停用服务的东西。问题是我的 CGI 会在 lighttpd 将整个文件上传到一组临时文件后识别文件上传操作。我唯一的想法是实现第二个按钮,允许人类操作者在开始上传之前手动禁用服务。但这并不优雅。
在 Javascript 中,我可以隐藏第二个按钮并使用上传按钮模拟单击,也许(我可以捕获文件输入的单击吗?但这听起来很脏,特别是我们使用不显眼的Javascript模式。
有没有其他方法可以启动一些文件上传前操作?也许通过我不知道的模块或HTTP或浏览器等的其他功能?
PS:我们需要向后兼容IE6,所以不能使用HTML5功能。我们使用XHTML 1.0严格模式。
Lighttpd 的现代版本改进了 lighttpd 内存管理并略微减少了 lighttpd 的内存占用,因此这对您来说可能不再是问题。
如果仍然是,则:
LightTPD mod_magnet可以配置为发送触发器:
https://wiki.lighttpd.net/Lua_Trigger_Functions
但是,如果您禁用服务,则在自动重新启用服务之前,您可能只应在有限的时间内(例如两分钟)执行此操作。
更好的是,确定运行服务和上传速度缓慢的确切瓶颈。 嵌入式系统是否内存不足并正在交换? 嵌入式系统的 CPU 是否不足?