最近,由于我的代码没有变化,我的PHP页面开始在某个区域挂起。它会在此行之前的页面上生成所有HTML:
$tickerJSON = file_get_contents("http://mtgox.com/code/data/ticker.php");
我注释掉了其他所有内容,这就是错误的原因。
我知道JSON url有效且数组名称正确。在这种情况下,我不确定问题出在哪里。有什么帮助吗?
注意:它不会显示部分页面或白页,它会一直加载,没有显示输出。
答案 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);