这两天又试了一下,网络不稳的情况下,还是很容易出错。大概情况是,下载失败后自动重试,若干次以后可能会下载成功,但有一定机率下载后打不开,就是我之前截图的第一种情况。我观察过,第一次下载的时候,获取的大小是正常的,只是可能由于服务器响应之类的问题导致失败。重试下载时,获取的大小明显不对,虽然下载成功,但实际下载成功后打不开。
另外还有个问题,就是在循环重试的过程中,可能出现严重超出超时秒数的时间,仍不返回false的问题,一般第一次调用下载模块,印象中似乎没出过类似的问题,或者可能没有严重超出
循环几次以后,可能会一直卡在进度条上,有时候可能过几十秒能继续,有时候就一直卡下去了。下图里的进度条,是我手动调出的,而且这已经是我第2次运行99秒的循环了,第一次的截图被剪贴板覆盖了。。。估计这次就要一直卡下去了
这个要延伸出来,还有点复杂,大概是这样:如果下载模块会卡住了,我会执行以下两种操作:
1. 点进度条右上角那个清除(是垃圾桶,不是X号),下载进度条消失,但调用下载模块的这个动作可能还在运行,托盘的菜单里能看到。
2. 通过停止运行中的动作(包含下载模块的动作没有被忽略),报的提示说停止了XX个动作,但有很大概率:下载进度条还在,托盘菜单还能看到动作。以我的经验,如果我判断这个进度条卡了,那停止运行中的动作,就没法消除进度条。正常情况下进度条会消失,我试过
所以,无论哪种操作,都有概率需要通过托盘菜单手动结束。第1种操作几乎必须手动结束,第2种操作看概率。而且手动结束以后,托盘菜单里确实不显示了,但可能过了几十秒才弹出黄色的提示框,说明已中止XX动作。
另外,如果是点X按钮,有时候可以取消对应的下载,但有时候也出现无效的情况,点了X也不会关闭下载,怀疑这时候已经卡住了(是卡下载还是卡动作,就搞不清了)
另另外,我还验证过,在QK下载不下来,进度一直不更新的情况下,在网站上直接点开大图,是能基本顺利打开的,有时候网不好,可能慢点,但一般一二次都能顺利刷新出来,所以下载模块会卡住,应该和网站没啥关系
重名的问题,我运行动作下载的时候几乎不会重复下载,就算偶尔有重复下载的,也肯定是完全取消现有的下载之后,再运行动作下载。我设置了重试下载5次,但肯定是在下载模块输出false的情况下才会重试,而正常情况下,下载模块失败后会自己清理扩展名带DOWLOADXXXXX的临时文件吧
所以我怀疑是不是超时卡进度条和下载的文件被占用,实际上都是卡动作的原因?
PS:
目前下载的图片打不开但返回true的问题,我通过读取图片模块进行验证,算是解决了。所以现在最烦的就是卡下载进度这个了————这个问题最关键是,卡住之后,我就没法让它失败,只有它返回失败了,我才能用后续的步骤溯源,调出下载链接或者下载页,如果直接强制结束,我就再也不知道下载的是哪张了,只能参考历史记录和已经下载的图,核对哪个没下载下来,特别费时间。
另外,图片下载完只显示一部分的问题,是wget中断导致的,与QK无关。本来想用wget取代下载模块的,基本功能实现了,但有些控制台数据和意外中断的情况,实在搞不定,还得指望下载模块,所以有空的话尽量帮我看看到底什么原因,能解决就最好!谢谢~