PHP cURL到很多网址

时间:2015-09-12 13:46:57

标签: php curl

我有php代码,无法理解为什么php脚本只创建4个文件,但没有数据。如果我只使用curl只为一个没有foreach循环的url,那么一切都会好的。有什么想法吗?

$years = array('2012', '2013', '2014', '2015');
foreach($years as $year)
{
    $url = "http://lpo.dt.navy.mil/data/DM/Environmental_Data_Deep_Moor_{$year}.txt";
    $fp = fopen(base_path() . "/database/rawdata/{$year}.txt", 'w');

    $curl = curl_init();
    curl_setopt_array($curl, array(
        CURLOPT_URL             => $url,
        CURLOPT_FILE            => $fp,
        CURLOPT_VERBOSE         => 1,
        CURLOPT_RETURNTRANSFER  => 1,
        CURLOPT_FAILONERROR     => 1
    ));

    curl_exec($curl);

    if (!curl_errno($curl))
    {
        $info = curl_getinfo($curl);
        Log::info("File created  {$year}.txt");
        Log::notice("Evaluation of this script was {$info['total_time']} seconds!");
    }
    else
    {
        Log::error("cURL ERROR " . curl_error($curl));
    }

    curl_close($curl);
    fclose($fp);
}

1 个答案:

答案 0 :(得分:3)

请参阅PHP网站上的joeterranova' s comment

  

似乎在设置之前设置CURLOPT_FILE   CURLOPT_RETURNTRANSFER不起作用,大概是因为   CURLOPT_FILE取决于CURLOPT_RETURNTRANSFER被设置

因此,您应该将curl_setopt_array更改为以下内容:

curl_setopt_array($curl, array(
    CURLOPT_URL             => $url,
    CURLOPT_RETURNTRANSFER  => 1,
    CURLOPT_FILE            => $fp,
    CURLOPT_VERBOSE         => 1,
    CURLOPT_FAILONERROR     => 1
));