1

我正在编写一个从 Internet 下载图片的 PHP 脚本。由于数据量很大,脚本的执行时间从 10 到 15 分钟不等。有没有更好的方法来处理这种情况,或者我应该简单地执行脚本并让它花点时间?

4

3 回答 3

1

您的脚本似乎本质上是 I/O 绑定的。如果无法获得更多带宽,您无能为力。

您可以通过增加交互性来改善用户体验(如果有的话)。例如,您可以在会话中保存您打算下载的文件名,并在每个文件之后重新显示页面(并刷新它,或转到 AJAX),显示预期完成时间、当前速度和完成百分比。

基本上,该脚本将在会话中保存 URL 数组,并在每次迭代时弹出其中一些并下载它们,也许会检查它所花费的时间(如果您在半秒内下载一个文件,那么下载另一个文件是值得的)。

由于脚本会执行多次,而不仅仅是一次,因此您不必担心它的超时。但是,您必须处理用户中止整个过程的可能性。

于 2013-07-16T19:02:08.220 回答
1

如果没有任何带宽限制,我会建议使用多个线程来更快地完成它。但最接近 php 的是进程控制

或者,前一段时间我写了一个类似的爬虫,为了更快地执行它,我使用 exec 函数来实例化同一文件的多个线程。因此,您还需要创建存储库和锁定机制。听起来和看起来很脏,但有效!

于 2013-07-16T19:03:39.027 回答
0

如果优化值得投入时间,并且如果大部分执行时间花费在图像处理上,那么调用一个旋转几个进程的 shell 脚本可能是一种选择

于 2013-07-16T19:10:18.973 回答