Страница PHP висит на этом блоке кода - PullRequest
1 голос
/ 19 июня 2011

Недавно, без каких-либо изменений в моем коде, моя PHP-страница начала зависать в определенной области.Он генерирует весь HTML-код на странице прямо перед этой строкой:

$tickerJSON = file_get_contents("http://mtgox.com/code/data/ticker.php");

Я закомментировал все остальное, и это является причиной ошибки.

Я знаю, что этот URL JSONдействительные и имена массивов верны.Я не уверен, где проблема в этом случае.Любая помощь?

Примечание. Он не отображает частичную или белую страницу, он будет загружаться вечно без вывода на экран.

Ответы [ 2 ]

2 голосов
/ 19 июня 2011

Проблема заключается в том, что удаленный сервер, по-видимому, намеренно блокирует запросы, которые не отправляют строку агента пользователя.По умолчанию строка user-agent в PHP пуста.

Попробуйте добавить эту строку прямо над вашим вызовом:

ini_set('user_agent', 'PHP/' . PHP_VERSION);

Я протестировал вышеупомянутое с помощью этого скрипта, и он отлично работал для меня:

<?php

ini_set('user_agent', 'PHP/' . PHP_VERSION);

$tickerJSON = file_get_contents("http://mtgox.com/code/data/ticker.php");

echo $tickerJSON;
1 голос
/ 19 июня 2011

Обновление:

$tickerJSON = shell_exec('wget --no-check-certificate -q -O - https://mtgox.com/code/data/ticker.php');

Удаленное подключение, которое вы выполняете, занимает очень много времени.Вы можете обойти это с предоставлением значения тайм-аута.Если это займет слишком много времени, функция не будет возвращать никаких данных, но это также не будет препятствовать продолжению работы скрипта.

Кроме того, вам нужно установить user-agent:

// Create a stream
$opts = array(
  'http'=>array(
    'timeout'=> 3, // 3 second timeout
    'user_agent'=> 'hashcash',
    'header'=>"Accept-language: en\r\n"
  )
);
$context = stream_context_create($opts);
$url = "https://mtgox.com/code/data/ticker.php";
$tickerJSON = file_get_contents($url, FALSE, $context);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...