具有大量执行时间的PHP脚本


PHP Scripts with a huge amount of Execution Time

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

您的脚本看起来基本上是I/O绑定的。除了获得更多的带宽,你几乎无能为力。

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

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

由于脚本执行了好几次,而不是一次,所以您不必担心它的超时。但是,您必须处理用户中止整个过程的可能性。

如果没有任何带宽限制,我建议多个线程可以更快地完成任务。但是php最接近的是过程控制。

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

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