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

zouw168 2017-08-05 10:03:56
$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可以解决吗?麻烦贴出源码以及调用方法,非常感谢!
...全文
505 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
TheGreatGathb 2019-11-05
  • 打赏
  • 举报
回复
傲雪星枫 2017-08-15
  • 打赏
  • 举报
回复
引用 10 楼 zouw168 的回复:
能写下代码吗?
参考:http://blog.csdn.net/fdipzone/article/details/75208853
zouw168 2017-08-12
  • 打赏
  • 举报
回复
参数type和postid是从其他页面(a.php)获取的,另外的页面(c.php)需要获取这个页面(b.php)的结果。。
xiaogei123 2017-08-07
  • 打赏
  • 举报
回复
引用 11 楼 xiaogei123 的回复:
如果你是想查询快递信息,接口慢的话,通常有两种方法 一种是使用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>
iframe的引号写成中文的了 应该是英文的
xiaogei123 2017-08-07
  • 打赏
  • 举报
回复
如果你是想查询快递信息,接口慢的话,通常有两种方法 一种是使用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>
傲雪星枫 2017-08-06
  • 打赏
  • 举报
回复
如果加载50次,可以使用多进程方式调用,而不是循环一次次调用。这样可以节省时间。 可以使用curl_multi来实现。 curl_multi_init curl_multi_add_handle curl_multi_exec curl_multi_getcontent curl_multi_remove_handle curl_multi_close
zouw168 2017-08-06
  • 打赏
  • 举报
回复
我用的是tp,1楼的代码在function中,最后还要把获取到的变量传递到另外的php文件中
zouw168 2017-08-06
  • 打赏
  • 举报
回复
我的页面一次要加载50个快递结果。
傲雪星枫 2017-08-06
  • 打赏
  • 举报
回复
或者你可以改用curl方式访问,加上超时时间。这样就不会卡住了。
curl访问方式

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

$start = getMicrotime();

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.kuaidi100.com/query?type=yuantong&postid=11111111111");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 3); // 3秒超时
curl_setopt($ch, CURLOPT_HEADER, 0);
$s = curl_exec($ch);
curl_close($ch);
//$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'];
傲雪星枫 2017-08-06
  • 打赏
  • 举报
回复
可以看看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,看看那个网络节点卡住了。
hongmei85 2017-08-06
  • 打赏
  • 举报
回复

<?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>
zouw168 2017-08-06
  • 打赏
  • 举报
回复
js要怎么写才能访问到这个PHP php里面有参数哦
zouw168 2017-08-06
  • 打赏
  • 举报
回复
能写下代码吗?
hongmei85 2017-08-05
  • 打赏
  • 举报
回复
js不行,有跨域问题,除非这网站提供jsonp接口 或者你看看这个免费接口https://www.kuaidi100.com/openapi/api_post.shtml#d06

21,891

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧