PHP页面挂起在这段代码上

时间:2011-06-18 22:00:43

标签: php json

最近,由于我的代码没有变化,我的PHP页面开始在某个区域挂起。它会在此行之前的页面上生成所有HTML:

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

我注释掉了其他所有内容,这就是错误的原因。

我知道JSON url有效且数组名称正确。在这种情况下,我不确定问题出在哪里。有什么帮助吗?

注意:它不会显示部分页面或白页,它会一直加载,没有显示输出。

2 个答案:

答案 0 :(得分:2)

问题是远程服务器似乎故意停止不发送用户代理字符串的请求。默认情况下,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 :(得分:1)

<强>更新

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

你做的远程连接需要很长时间。您可以使用提供超时值的方法。如果花费太长时间,该函数将不会返回任何数据,但它不会阻止脚本继续运行。

接下来,您需要设置用户代理:

// 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);