我正在编写一个从Internet上下载图片的PHP脚本。由于数据量巨大,脚本的执行时间从10-15分钟不等。有没有更好的方法来处理这种情况,还是我应该简单地执行脚本并让它花费时间?
答案 0 :(得分:1)
您的脚本似乎基本上受I / O限制。没有更多的带宽,你几乎无能为力。
您可以通过增加交互性来改善用户体验(如果有的话)。例如,您可以在会话中保存要打算下载的文件名,并在每个页面之后重新显示页面(并刷新它,或转到AJAX),显示预期的完成时间,当前速度和百分比完成。
基本上,脚本会在会话中保存URL数组,并在每次迭代时弹出一些并下载它们,也许检查它所花费的时间(如果你在半秒内下载一个文件,下载它是值得的另一个)。
由于脚本执行了几次,不仅是一次,你不必担心它的超时。但是,您必须处理用户中止整个过程的可能性。
答案 1 :(得分:1)
如果没有任何带宽限制,我会建议多个线程更快地完成。但最接近的是process control。
或者前段时间我写了一个类似的scraper,为了更快地执行它,我使用了exec函数来实例化同一个文件的多个线程。因此,您还需要创建存储库和锁定机制。听起来很脏,但很有效!
答案 2 :(得分:0)
如果优化值得投入时间,并且如果在图像处理上消耗了大量执行时间,则调用可以旋转几个进程的shell脚本可能是一个选项