Я пытаюсь получить доступ к историческим данным на API Yahoo (с реализацией PHP / Mysql), используя этот URL в качестве примера:
$url = http://ichart.finance.yahoo.com/table.csv?s=INTC&c=2014&f=2015&a=0&d=0&b=1&e=1&g=d&ignore=.csv
Это код, который я использовал для доступа к нему:
$filesize = 2000;
$handle = fopen($url, "r");
$raw_quote_data = fread($handle, $filesize);
echo $raw_quote_data;
fclose($handle);
Оператор echo предназначен для проверки ошибок, чтобы убедиться, что я получаю все данные, прежде чем сохранить их в своей базе данных. Однако возвращаемое значение $ raw_quote_data содержит данные только за последние 30 дней введенного временного диапазона. Поскольку введенный мною диапазон дат был с 1 января 2014 года по 1 января 2015 года, он должен вернуть данные за 365 дней. Так что я делаю не так? Куда идут остальные данные?
Первое, что я попробовал, конечно, было изменение размера файла, что никак не влияет на вывод.
использование file_get_contents()
вместо.
$raw_quote_data = file_get_contents($url);
Вы запрашиваете файл 15 КБ и читаете только 2000 байтов. Также обратите внимание, что когда вы вручную читаете из буфера, все данные, возможно, еще не поступили. Вот почему «это не имеет значения».
Попробуйте это вместо этого:
set_time_limit(0);
$file = @fopen($file_path,"rb");
while(!feof($file))
{
print(@fread($file, 1024*8));
ob_flush();
flush();
}
Увидеть Эта статья для дополнительной информации.
альтернативно file_get_contents
может быть более простой подход.