php - 尝试从CSV下载URL,它随机URL停止

时间:2018-05-11 13:36:23

标签: php csv file-get-contents downloading file-put-contents

我已经尝试过搜索这个问题,但无法找出实际上在随机阶段失败的原因。

我有一个包含2列,ID和URL的CSV,有100行。我有以下代码来遍历CSV行,并使用put_file_contents()将URL上的数据下载到名为[ID] .jpg的文件中。

我也在每次循环中向屏幕输出数据并向" log.txt"添加一行。出于某种原因,它只是在随机URL之后停止工作,并且没有在error_log中放置任何内容。

有时它会在17个网址之后,有时是在27之后,有时是在49之后。我对它失败的原因感到茫然。

<?php

set_time_limit(3600);

$data = array_map('str_getcsv', file('IDtoImageURL2.csv'));

$total = 0;

echo "Count total: ".count($data)."<br /><br />";

for($i = 1; $i < count($data); $i++)
{
    file_put_contents("log.txt", $data[$i][1]." - ", FILE_APPEND | LOCK_EX);
    $total++;

    $url = $data[$i][1];
    $img = "photos/".$data[$i][0].'.jpg';
    $img2 = "photos/named/".$data[$i][0].'.jpg';

    echo "<b>Getting ".$data[$i][0].":</b><br />";
    echo "URL: ".$data[$i][1]."<br />";
    echo "putting $img<br />";
    echo "putting $img2<br />";

    $imgData = file_get_contents($url);

    if($imgData)
    {
        file_put_contents($img, $imgData);
        file_put_contents($img2, $imgData);

        echo "<b>Done</b><br /><br />";

        file_put_contents("log.txt", "done".PHP_EOL, FILE_APPEND | LOCK_EX);
    }
    else
    {
        echo "<b>Failed</b><br /><br />";

        file_put_contents("log.txt", "failed".PHP_EOL, FILE_APPEND | LOCK_EX);
    }   
}

echo "Total: ".$total;

?>

Here is the CSV data that I'm working with.

奇怪的是,有时候它会将一些回声输出发布到屏幕上,有时它只会默默地出现空白的碎片错误。 URL以相同的顺序循环,因此我不理解为什么结果会保持不同。任何意见都将不胜感激。

感谢您的时间

0 个答案:

没有答案