一个因Yac配置导致的问题

  今天下午因为一个问题耽搁了好久,当然最后在日志中查明是Yac导致的,当然这不是说Yac的不好,而是对项目的不熟悉导致的。

问题描述
出现问题的功能实际上是上传图片,但是无论怎么上传,前端同学收到的返回结果都是一样的,导致页面显示出来的图片也是一样的。由于我有两台开发机,其中一台是完全正常的,但是另一台就出现了前面所说的诡异的现象,由于代码和数据库都是一致的,最出现这个问题还是比较诡异,但是即便如此也不敢就这样上线啊(其实在QA的环境一样是这样的问题,哈哈)。

一定要找出问题的根源!

怎么找呢?
最开始碰到这样的问题也真是一头雾水,所以就慢慢的断点调试,发现每次上传上的图片确实是不同的(通过var_dump($_FILES)来看),基本上能排除掉这个原因,因为我有一台完全没问题的开发机是没问题的。

甚至,当我把上传图片而保存到数据库中的记录删除都无济于事,那只能是环境的问题。然后就考虑会不会是缓存的原因呢?于是就查看php.ini中是不是配置了opcache,但问题不在这,因为我这里根本就没有开opcache,这就尴尬了。

于是,只能查看一下框架的日志,看看能不能看出什么,结果就发现了下面这一条:

26382:TRACE: 2016-11-03 16:53:38 ip[192.168.33.1] token[1259464067] [system.caching.YacCache] [CCache.php:175] at[0.304]    Saving "xxxx?xxxx" to cache

卧槽,原来是开了Yac,然后就查看了下有问题的这台开发机的php.ini,发现确实启用了Yac,这就尴尬了。

禁用Yac

[yac]
extension=yac.so
yac.enable = 0
yac.enable_cli = 0

重启php-fpm,问题解决~

总结
1.这个问题虽然不大,但是如果无法查明真相,那就是问题,所以一定要找到问题的根源,才能上线!
2.由于有两个开发机作为对照,所以代码一样,数据库一样,那么一定就是环境的问题!多往这方面考虑就好了。

一个因Yac配置导致的问题
Tags:     

发表评论

电子邮件地址不会被公开。 必填项已用*标注