UPDATE 2016/05/13

stackoverflow上的解决方法:http://stackoverflow.com/questions/3629504/php-file-get-contents-very-slow-when-using-full-url

$context = stream_context_create(
array('http' =>
array(
      'method'=>,'get',//必须要加请求提交的方法,否则不成功
      'header'=>'Connection: close\r\n')
)
);
file_get_contents("http://www.something.com/somepage.html", false, $context);

在工作时需要获取微信账户的头像

$url = 'http://wx.qlogo.cn/mmopen/xu0fLo9waqKSTDO7j0kSO41O5Luq3LB6ozUvY4O7OsXUWNicB49fBs8nGYzoqcwGDARQZHpVuic4JSDngEVjVo10BoiaPd0iciaOb/0';
$content = file_get_contents($url);
file_put_contents('uploads/a.jpg', $content);

但是,速度特别慢。达到30秒。后来在segmentfault上找到了相同疑问的提问帖

原因以及解决方法如下:

$url 这一行上面增加 ini_set('default_socket_timeout', 1); 设置一下 默认超时时间.

你所请求的这个图片, 对方的服务器支持 Connection: keep-alive, 所以 PHP 在接收到数据之后, 维持了一段时间, 一直等到超时, 才返回, 所以 在设置 默认超时时间的情况下 会比较慢.

你可以用同样的代码(不使用ini_set),获取这个URL http://sfault-avatar.b0.upaiyun.com/160/666/1606661144-55fe2a534b79f_huge256, 很快就回来了, 因为对方告诉了PHP, 在输出完数据接收完之后, 连接就可以关闭了.

file_get_contents微信头像等待时间过长的原因的更多相关文章

  1. SSH远程连接连接其他主机,等待时间过长的原因。

    ssh远程连接登录到其他主机,输入登录用户名,等待时间很长时间,然后才出现输入密码的提示.导致这样时间过长,太慢了的原因有两个.(1)当使用ssh远程登录到某个IP时,这个IP的主机系统会读取/etc ...

  2. Android 高仿微信头像截取 打造不一样的自定义控件

    转载请表明出处:http://blog.csdn.net/lmj623565791/article/details/39761281,本文出自:[张鸿洋的博客] 1.概述 前面已经写了关于检测手势识别 ...

  3. 麒麟子Cocos Creator实用技巧一:如何正确地显示微信头像

    不管是游戏App,还是H5,又或者是微信小游戏.但凡接入了微信登录的应用,都可能需要显示微信头像. 在Cocos Creator中,我们常见的显示方法像下面这样 var headimg = 'http ...

  4. 使用canvas生成含有微信头像的邀请海报没有微信头像

    最近做了一个微信内访问的H5页面,长按分享图片发送朋友邀请的海报,网上搜索资料,得出解决思路,用canvas将页面绘制生成图片, 问题:canvas 图片跨域. 解决过程(填坑历程): 1.从网上存在 ...

  5. 性能问题: SQL*Net message from client 等待时间太长

    今天我终于自己遇到了这个问题, PO form 打不开了, 看了下 trace 发现 SQL*Net message from client 等待时间太长. 但是这不可能是网络问题, 这个环境是在我电 ...

  6. 微信小程序获得微信头像和昵称

    微信小程序之登录态的探索 { wx.getSetting({ success: res => { if (res.authSetting && res.authSetting[' ...

  7. canvas跨域完美解决,微信头像解决跨域

    现在前端技术发展的越来越快,很多图片合成这种耗费服务器性能的,都可以移动到前端进行了合成了.而且合成很方便,我们利用 canvas 可以实现好多东西. 自动打算利用前端来合成图片,在网上就找到了 ht ...

  8. 公测后,微信小程序应用可能被拒原因.

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 34.0px "PingFang SC Semibold"; color: #23232 ...

  9. 重磅消息:微信小程序支持长按二维码进入

    之前微信小程序一般通过以下入口进入: 而用户经常使用“长按二维码”识别应用的功能一直未开放,据酷客多了解,微信安卓6.5.6内测版已经支持长按二维码识别和进入小程序,意味着把小程序二维码分享给朋友,或 ...

随机推荐

  1. C#编码标准

    一.命名约定 1.PascalCasting PascalCasing 每一个单词第一个字母大写,其余字母均小写.例如:FileAccess,ArraySegment等. 除了参数.变量.常量外,所有 ...

  2. centos桌面使用

    firefox添加flash插件 [root@bogon home]# cp libflashplayer.so /usr/lib64/mozilla/pl pl plugins/ plugins-w ...

  3. 成功熬了四年还没死?一个IT屌丝创业者的深刻反思

    三个IT屌丝创业的故事 从前有三个屌丝,聚在一起做网络.提供免费的网络服务,砸锅卖铁,通宵达旦,除了卖肾,啥都做了.3年后终于做到了五百万用户.对于年轻人来说,能把五百万人玩弄于鼓掌之间,已经是很牛逼 ...

  4. papi酱视频因违规遭下线整改,你知道原因吗?

    今日4月18日,在微信上的一篇<papi酱遭广电总局封杀 罗振宇1200万恐打水漂>的文章迅速转了起来,说的就是现在网红第一人“papi酱”的视频被广电总局责令下架的消息.箭头直指papi ...

  5. 【axc】简单的线性动画绘制

    在一个View上绘制一条直线  然后做出相应的动画效果  可以这样封装三个方法: /** *  划线工具 * *  @param lineArray   线段的点数组 NSValue 类型  默认第一 ...

  6. 在VS2013中查看C/C++预处理后的文件

    1.右键工程(例子中是myproject),选择[属性],在弹出的对话框中,选择[配置属性]-->[C/C++]-->[预处理器],将[预处理到文件]该为[是],应用,确认. 2.在VS ...

  7. momentjs 求小时差异

    momentjs  使用 var now1 = moment( moment().unix()*1000); //获取unix时间戳 需要*1000 var befor_time = moment(1 ...

  8. SEO之HTML优化:让你的网站HTML代码更符合SEO规范

    摘要HTML优化是网站内部优化的重点,可能对SEO新手来说,容易忽略.符合搜索引擎习惯的HTML代码是极利于SEO的,可以让你的网站获得更好的搜索引擎排名.如何制作一个标准的HTML网页,如何做HTM ...

  9. mysql中int、bigint、smallint 和 tinyint的区别

    使用整数数据的精确数字数据类型. bigint 从 -2^63 (-9223372036854775808) 到 2^63-1 (9223372036854775807) 的整型数据(所有数字).存储 ...

  10. # java对xml文件的基本操作

    下面是简单的总结三种常用的java对xml文件的操作 1. dom方式对xml进行操作,这种操作原理是将整个xml文档读入内存总,在内存中进行操作,当xml文档非常庞大的时候就会出现内存溢出的异常,这 ...