我有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);
}
答案 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
));