file_get_contents из URL работает только на локальном сервере - PullRequest
0 голосов
/ 06 февраля 2020

Я только начал изучать PHP и работать над кодом, который извлекает публикуемые c данные со страницы Myfxbook. Есть ли какой-нибудь возможный ответ, почему следующая функция отлично работает на моем локальном сервере XAMPP и возвращает нужное мне значение, но после загрузки его на сервер общего хостинга возвращает 0?

function loadFromURL($url) {
    $html = file_get_contents($url);
    $doc = new DOMDocument();
    $doc->loadHTML($html);

    $stats = $doc->getElementById("stats");

    $firstLi = $stats->childNodes[1];
    $secondSpan = $firstLi->childNodes[1];

    $strVal = $secondSpan->textContent;

    $roundGainPC = floatval($strVal);

    return round($roundGainPC);
}

Что более странно для меня, что вторая функция в моем коде работает как на моем локальном сервере, так и на общем веб-сервере:

function loadFromURL2($url) {
    $html = file_get_contents($url);
    $doc = new DOMDocument();
    $doc->loadHTML($html);

    $stats = $doc->getElementById("historyTotalSpan");

    $strVal = $stats->textContent;

    $totalTrades = preg_replace('/[^0-9]/', '', $strVal);

    return round($totalTrades);
}

Для этого тестового проекта я использую одну из систем publi c для обоих функции: https://www.myfxbook.com/members/autotrade/turtle-eur/1644166

В идеале первая функция вернула бы мне общее усиление, которое в настоящее время составляет 174 (округлено). Вместо этого он возвращает 0 на реальном сервере.

1 Ответ

0 голосов
/ 06 февраля 2020

Я думаю, что функция file_get_contents приятна для получения файла с локального диска. Вместо этого используйте curl.

function loadFromURL($url) {
      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
      $html = curl_exec($ch);
      $doc = new DOMDocument();
      $doc->loadHTML($html);
      ...
      curl_close($ch);
    }
...