curl与file_get_contents访问远程接口慢的解决

  这几天在协调处理短信接口调用失败的问题,处理完后发现发送短信很耗时,要5秒左右,是PHP调用 file_get_contents访问远程接口的的,而我前面处理调用失败问题时最后测试短信接口时是直接用的Linux命令curl调用,速度是非常快的。

  先从代码入手,刚开始以为是file_get_contents比curl慢,虽然觉得也不至于慢到这种程度,但是总得试试看,于是换成curl,依旧很慢。

  难道是域名解析问题?于是在hosts文件里写好本地解析,再试,果真正常了,秒发。看来真是域名解析问题,但又不知为何Shell里没问题,独独PHP里有问题。虽然把域名写死在hosts里能解决问题,但是总不是办法。

  上网查,有人说是PHP缓存了域名解析,重启PHP即可。我马上去重启PHP,还真好了。但是有一点我不明白,既然是缓存,那应该是速度更快才对。在一个技术群里讨论时我突然想起来昨天测试接口时发现服务器设置的首选DNS是不能用的,然后我改了。难道PHP缓存的不是域名解析,而是域名解析服务器(DNS)?看来只有这个解释了,有空可以做个测试验证一下。

PHP中Notice: iconv(): Unknown error (84) 的解决办法

   今天在写一个导出数据到csv的功能,为了防止中文乱码,需要将utf8转码,我使用了这样的语句:

#这里先是把csv文件的内容生成,然后下面转码
$csv=iconv('utf-8','gb2312',$csv);

结果报Notice: iconv(): Unknown error (22)的错误,想起来$csv里带有换行,所以没办法转换,于是在各个数据项串成csv文件内容前转换,这时报了两个iconv(): Unknown error (84)的错误,输出内容,发现报错时有一个是处理汉字“密菓”,第二个字不认得,生僻,我突然想到,难道是字符集不支持,于是换成gbk:

$csv .= iconv('utf-8','gbk',$val)

再运行,没报错了。

微信大文件的清理

   最近手机可用空间越来越小了,新软件都没办法安装。前几天都是用手机自带的垃圾清理软件清理一些缓存之类的才能安装新软件,老是这样,太麻烦了。

  今天决定动手解决这个问题。用软件分析过文件占用后发现微信APP的文件夹里有几个文件异常的大,其中85f22adb…(很长就不抄完了)/sfs文件夹下有一个文件名叫sns.block.00001,大小达到1.3G。不知道这文件是干什么用的,删除怕聊天记录也没了,上网搜索了下,也没有人能说出个所以然。看这文件名,带有sns,我猜测与朋友圈有关系,于是退出微信,先重命名备份这个文件,然后再打开微信,发现聊天记录正常,没丢,通讯录也正常。再进入sfs文件夹,发现微信已经新建了一个文件sns.block.00000,为了验证我的想法,我刷了下朋友圈,再去看这个文件,发现变大了一些,再往下拉,加载更多的朋友圈内容,每加载一些内容,这个文件就会变大,观看朋友圈视频后也一样会增加此文件大小。由此可见此文件是保存朋友圈信息用的。

  总结:类似sns.block.00000,sns.block.00001这样的文件是保存朋友圈信息用的,以便回看历史信息能快速加载,少耗费流量。所以可以大胆放心地删除,最多是查看近日朋友圈内容的时候再下载一次而已。