我正在尝试从网址保存图片。
<?php
$number = 200;
while ($number <= 1000){
$url = 'http://site.com/productphotos/gallery_'.$number.'-l.jpg';
$img = ''.$number.'.jpg';
file_put_contents($img, file_get_contents($url));
}
$number++;
?>
所以有site.com/productphotos/gallery200-100-l.jpg
为什么这不起作用?
答案 0 :(得分:3)
除了您的网址格式与给定示例的格式不匹配(如Alex的答案),您的循环将无限执行($number
vs $num
)。
尝试使用此循环
for ($number = 200; $number <= 1000; $number++)
编辑:至少,它是在您编辑问题之前完成的; - )
编辑#2:除了语法错误,我不认为PHP是解决这个“问题”的最佳解决方案。您可以使用wget
轻松编写shell /批处理脚本来获取图像。
#!/bin/bash
for i in {200..1000}; do
wget "http://example.com/gallery/${i}.jpg"
done
答案 1 :(得分:3)
似乎您在关闭while(){}函数后增加$ number ...
答案 2 :(得分:2)
正在制作的字符串在每次迭代时都是这样的......
http://site.com/productphotos/gallery_200-l.jpg
...与你引用的内容不符......
http://site.com/productphotos/gallery200-100-l.jpg
也可能是因为你allow_url_fopen()
关闭了。如果您无法更改它并且它已关闭,请使用cURL等库来获取图像。
此外,您正在从该循环发出800个请求,这是一个相当大的数量。您可以在该循环中使用sleep(1)
并确保脚本不会与set_time_limit(0)
超时,从而为PHP提供喘息机会。当然,这在最终用户发起的HTTP请求中的速度还不够快,所以请尝试从调度程序(如Cron作业)运行此过程。
如果你真的想要一个特定的答案,告诉我 它不起作用 - 任何错误,图像保存但是错误等等。