消息关闭
    暂无新消息!

php加载站外内容导致网页打开很慢

问题作者 : Fearn2017-08-07发布
$s =file_get_contents('http://www.kuaidi100.com/query?type=yuantong&postid=11111111111');
$data = json_decode($s,1);
echo 'state:' . $data['state'] . '<br/>';
echo 'lastmsg:'. $data['data'][0]['time'] . ','. $data['data'][0]['context'];

php中加载了这段代码  网页打开变慢。有什么办法解决吗?用js可以解决吗?麻烦贴出源码以及调用方法,非常感谢!

11个回答

︿ 2
如果加载50次,可以使用多进程方式调用,而不是循环一次次调用。这样可以节省时间。
可以使用curl_multi来实现。
curl_multi_init
curl_multi_add_handle
curl_multi_exec
curl_multi_getcontent
curl_multi_remove_handle
curl_multi_close
︿ 1
js可行,没跨域问题,自己写个 1.php 放在你自己的网站,js访问这个 1.php ,
1.php 里内容写你1楼的
︿ 0
我用的是tp,1楼的代码在function中,最后还要把获取到的变量传递到另外的php文件中
︿ 0

<?php
if(isset($_GET['c']) && isset($_GET['no'])){
$s =file_get_contents('http://www.kuaidi100.com/query?type=' . $_GET['c'] . '&postid=' . $_GET['no']);
echo $s;
exit;
}
?>
<form method="post" action="">
快递公司<input type="text" id="type" value="yuantong"/> 运单号码<input type="text" id="no" value="11111111111" /> <input type="button" value="查询" id="refresh">
</form>
<span id="res"></span>
 
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
$('#refresh').click(function(){
    $.getJSON('?c=' + $('#type').val() + '&no=' + $('#no').val()+'&'+Math.random(),function(d){
        $('#res').html('state:' + d['state'] + '<br/>lastmsg:' +d['data'][0]['time'] + ','+ d['data'][0]['context']);
    })
})
</script>
︿ 0
如果你是想查询快递信息,接口慢的话,通常有两种方法
一种是使用ajax,不过涉及到夸域,所以你在后端用php调用这个接口

$s =file_get_contents('http://www.kuaidi100.com/query?type=yuantong&postid=11111111111');
$data = json_decode($s,1);

前端用ajax调用你这个php,这样接口慢不会影响你前端页面的加载。
第二种方法是使用iframe嵌套
<iframe frameborder=0 width=170 height=100 marginheight=0 marginwidth=0 scrolling=no src=‘http://www.kuaidi100.com/query?type=yuantong&postid=11111111111’></iframe>

︿ 0
可以看看file_get_contents的请求返回时间。

function getMicrotime(){  
        list($usec, $sec) = explode(' ', microtime());  
        return (float)$usec + (float)$sec;  
}  

$start = getMicrotime();
$s =file_get_contents('http://www.kuaidi100.com/query?type=yuantong&postid=11111111111');
$end = getMicrotime();
echo 'run time:'.(($end-$start)*1000).'ms<br/>';
$data = json_decode($s,1);
echo 'state:' . $data['state'] . '<br/>';
echo 'lastmsg:'. $data['data'][0]['time'] . ','. $data['data'][0]['context'];


我测试访问,执行时间90多ms,不算太慢了。

run time:90.999126434326ms
state:5
lastmsg:2017-07-24 21:17:01,快件已到达派送中妈妈驿站,如有疑问请联系63762999


如果你那边觉得慢,可以使用命令traceroute www.kuaidi100.com,看看那个网络节点卡住了。
︿ 0
js不行,有跨域问题,除非这网站提供jsonp接口

或者你看看这个免费接口https://www.kuaidi100.com/openapi/api_post.shtml#d06