【发布时间】:2013-12-21 22:33:34
【问题描述】:
我在不同的表格中有大约 600k 的图像 URL,我正在使用下面的代码下载所有图像,它工作正常。 (我知道 FTP 是最好的选择,但不知何故我不能使用它。)
$queryRes = mysql_query("SELECT url FROM tablName LIMIT 50000"); // everytime I am using LIMIT
while ($row = mysql_fetch_object($queryRes)) {
$info = pathinfo($row->url);
$fileName = $info['filename'];
$fileExtension = $info['extension'];
try {
copy("http:".$row->url, "img/$fileName"."_".$row->id.".".$fileExtension);
} catch(Exception $e) {
echo "<br/>\n unable to copy '$fileName'. Error:$e";
}
}
问题是:
- 一段时间后,比如 10 分钟,脚本会出现 503 错误。但仍然继续下载图像。为什么,它应该停止复制它?
- 并且它不会下载所有图像,每次都会有100到150张图像的差异。那么如何追踪哪些图片没有下载呢?
希望我已经解释清楚了。
【问题讨论】:
-
有没有可能使用
rsync? -
这个库与我要找的无关
-
转贴问题,如果我没有说清楚:1)即使在得到503之后它仍然继续向下图像,如何? 2)如何追踪,哪些图片没有下载?
-
@SureshKamrushi 我想为此添加一个调试角度。我建议.. 读取表条目-> 添加到临时表并复制文件-> 重复。在这种情况下,您可能会发现必须运行几次。但会克服一些超时/连接问题。就像服务器因为太多连接而丢弃您一样。这将复制文件,并记录它们,所以下次运行/刷新,它只会复制新文件。就像我说的,如果是连接问题,如果你还没有想到的话,值得一试。
-
@SureshKamrushi 检查我的答案。不要一次下载所有这些图像。分批下载。
标签: php