我必须在cron作业中使用api下载上千张图像。代码运行良好,但我想对其进行优化。我想,如果我必须下载1000张图片。主文件将作业分成10个部分(每个部分下载100张图片),并将作业分配给10个文件(可能是同一文件的10个实例) 10*100 = 1000张图片(类似于多线程)。主文件将被cron作业调用,rest工作应该像多线程一样。$pid = pcntl_fork();是又好又安全的方法吗?
发布于 2013-05-21 17:24:52
编写一个高性能的HTTP爬虫/下载器并非易事。我会描述一下,我会怎么做。请记住,有很多解决方案,所以如果您想更深入地研究这个主题,您可能想要阅读Modern Operating Systems by Andrew S. Tanenbaum。
pcntl_fork()启动您希望运行的工作进程数量。(是的,它是安全的,但它不容易使用。)SELECT... FOR UPDATE.pcntl_wait()),主进程打开一个数据库连接,并清除任何崩溃的worker可能已经离开的所有正在进行的标志。然后,它将关闭数据库,并重复此过程,直到所有下载完成。这是一条相对安全的旅行路线。但是,请记住,您正在使用的东西远远超出了一般(甚至是有经验的) PHP程序员的知识水平。你必须通过了解Linux (或Windows)进程模型是如何工作的,否则你将会有一个令人难以置信的崩溃的应用程序在你手中。
https://stackoverflow.com/questions/16610136
复制相似问题