还在用PHP5.2很丢脸吗?这个问题其实也不是本次文章的重点,小马挂羊头卖个狗肉。
问题是这样的,小马在写QQ、微信小程序消息推送的功能,其中有一个是需要脚本运行上线通知的消息,所以要跑cron定时器任务来实现。源头就在于服务端的PHP版本是7而定时器脚本的PHP版本是5.2.14p1。是的,你没看错。好家伙,于是从服务端拷贝过来的消息推送等class语法都无法兼容旧版本,无奈只能修改代码来兼容定时器的PHP低版本。
诸如[]改array()啊,函数不兼容啊这些都是小事。其中有一个非常头疼的是,json_encode($body,JSON_UNESCAPED_UNICODE);函数的不兼容处理,JSON_UNESCAPED_UNICODE该参数5.4以上才兼容。网络上有好多办法说什么自己写函数来实现编码等等,多多少少都存在问题,其实不用那么复杂,方法如下:
以QQ消息推送为例,先对模板内容含有汉字进行urlencode,然后进行json_encode,最后再对结果进行解码urldecode。问题解决!!
$body = array('keyword1'=>array('value'=>urlencode('XX活动不删档上线,迫不及待啦!')));
$query_json = json_encode($body);//todo 版本不兼容处理
$query_json = urldecode($query_json);
好了,再来回答标题问题,很多公司处于成本和线上已经存在的项目考虑,会考虑环境升级的成本问题,所以低版本并不为怪,鹅厂也不例外。有些公司甚至还在低版本上继续维护开发也是很正常。
网友评论