Разбор CSV находится на другом сервере с PHP, JavaScript - PullRequest
1 голос
/ 24 декабря 2010

Я хочу проанализировать динамически генерируемый файл CSV, который находится на другом сервере (Yahoo Finance), но из того, что я прочитал, вы не можете получить доступ к содержимому на другом сервере с помощью XMLHTTPRequest, по крайней мере, не в формате CSV.

Я подумал о решении этой проблемы, и я хотел бы знать, является ли это «правильным» способом или наилучшей практикой для этого, поскольку я относительно новичок в разработке.Вот что я придумал, используя PHP:

<?php
    $symbol = $_GET["s"];

    $path = "http://download.finance.yahoo.com/d/quotes.csv?s=" . $symbol . "&f=sl1d1t1c1ohgv&e=.csv";
    $yahooquote = fopen($path, "r");

    while(!feof($yahooquote))
    {
        $line = fgets($yahooquote, 1000);
        echo $line . "<br />";
    }

    fclose($yahooquote);
?>

Возвращает HTML-файл, содержащий строки файла CSV, и затем я могу использовать JavaScript / jQuery XMLHTTPRequest для его анализа на стороне клиента..

Это лучший способ сделать это?Есть ли у вас какие-либо идеи / предложения?Помните, что это должно быть fast , так как он должен запускаться каждые 10 секунд, чтобы обновить +100 котировки акций.Заранее спасибо.

Ответы [ 4 ]

3 голосов
/ 24 декабря 2010

Проблема в том, что его многократно запускают несколько пользователей вашего сайта.

Если вам нужна скорость, а также для уменьшения пропускной способности и производительности, вам следует сделать следующее:

Создайте скрипт, который выполняется частным образом cron каждые X секунд, который извлекает данные csv из Yahoo и сохраняет их локально на вашем сервере.

Если это не так, то когда ваши пользователи проверяют через ajax, вы можете просто передать им локальную копию.

все пользователи будут совместно использовать один и тот же кэшированный файл, и ваш единственный запуск будет выполняться раз в десять секунд, он также будет обрабатываться другим экземпляром, поэтому пользователи увидят более быстрые ответы, вы также можете прочитать о блокировке файла

Также вы можете использовать cURL на стороне PHP и

2 голосов
/ 24 декабря 2010

Используйте cURL, это в 5 раз быстрее.

function curl($url){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    return curl_exec($ch);
    curl_close ($ch);
}

$symbol = $_GET["s"];
$csv = "http://download.finance.yahoo.com/d/quotes.csv?s=" . $symbol . "&f=sl1d1t1c1ohgv&e=.csv";

$yahoo = curl($csv);

Теперь содержимое файла CSV будет находиться в переменной $ yahoo, которую вы можете проанализировать или сохранить на своем сервере (fopen, fwrite, fclose).

2 голосов
/ 24 декабря 2010

Посмотрите пример этого учебника. Они используют jQuery для запроса котировки акций Yahoo (в формате CSV) через Ajax, это именно то, что вы ищете.

1 голос
/ 24 декабря 2010

@ VerizonW: это руководство по чтению удаленного файла с использованием PHP охватывает четыре метода (включая тот, который вы используете в настоящее время), я предлагаю вам прочитать его, чтобы увидеть, какой метод вам наиболее удобен с. Я предпочитаю использовать cURL .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...