set_time_limit(0);
//省略代码
$path="照片";
while($row = $query->fetch()) {
    $image_arr.=$row[1].$row[2];
}
$image_array=explode(',',$image_arr);//获得一个数组,类似('a00001','a00002')
foreach($image_array as $v){
    $image=file_get_contents("http://111.11.11.111:80/IMG_".$v."_2122.jpg");//拼接图片地址
    file_put_contents(iconv("UTF-8", "GBK", $path."/".$v.".jpg"),$image);//下载图片
}
一共大概有 2000 张图片,为什么总是到中途(三四百张)就会中断了,报 500 错误
|  |      1ji4ozhu      2017-02-17 03:03:36 +08:00 目标服务器 WEBSERVICE 短暂挂了 | 
|  |      3CEBBCAT      2017-02-17 03:31:41 +08:00 via Android  1 | 
|  |      4msg7086      2017-02-17 03:33:34 +08:00 给对方的站长打个电话,告诉他网站被你搞挂了,让他赶紧起来修服务器。 | 
|      5william23      2017-02-17 07:32:21 +08:00 via iPhone #3 说的对,以前我在公司也有相同的案例,我也是不停地去拿数据,但是对方服务器是做了限制的,因为都是自己公司,好沟通,后来还是要让我这里做改动,让你这里每下载到一定的量就歇一歇,或者就是每过一段时间歇一歇,我当时是选择前者的,虽然我不是下载图片。。 | 
|  |      6hellommd      2017-02-17 08:11:01 +08:00 via iPhone 楼主的代码,异常情况都不考虑一下? 建议加入重试机制,异常捕抓。 | 
|  |      7dsg001      2017-02-17 08:21:31 +08:00 如果没有其他需求, php 保存图片列表,然后用 wget 下载 | 
|  |      8my101du      2017-02-17 08:34:14 +08:00 请继续等待。 最近我正好在搞这个东西,下载 1200 多张图片, Nginx 已经报 502 还是 504 了。但是观察文件夹,文件还在继续增加。可能是因为我设置了 php-fpm 的运行终止 timeout=0 | 
|      10grey5659 OP @my101du 每次浏览器中断报 500 错误的时候确实服务器挂掉了一样(应用无法访问),要在服务器的 tomcat 命令行窗口随便按一下键盘才会恢复……不知道是怎么回事 | 
|  |      11misaka20038numbe      2017-02-17 08:43:28 +08:00 如果是我来做的话,我会将文件名和状态写入一张数据表,然后 php 依次读取状态为未完成的文件。脚本下载成功则修改状态,直到所有文件状态为完成则结束,且成功下载一次就刷新脚本页面一次防止脚本执行超时。 | 
|  |      12techmoe      2017-02-17 21:07:01 +08:00 **告诉我哪里报 500 了**   如果是被抓取的 URL 返回 500 那无可或非是对方那边出的问题 但如果你是在浏览器中跑这个脚本浏览器返回 500 那只能说明是这个脚本运行报错了 诸如抓取过程中内存爆炸,或者 IO 错误,都有可能造成致命错误,如果是在浏览器里就肯定会直接返回 500 了 需要强调的一点是,对于抓取这种耗时长的操作,**尽量使用 CLI 模式运行脚本**(说白了就是在命令行下`php script.php`这样直接执行脚本而不是通过浏览器) 同时建议`error_reporting(E_ALL)` |