PHP-请教这段代码有何性能问题?
我一般连接memcached都用如下写法,但是最近被人指出这样写在性能上有隐患,请教大家到底会有什么问题呢?
$cache = get_memcached();
$res = $cache->get($key);
if(empty($res)) {
$sql = "SELECT ......";
$res = $db->query(sql);
if($res){
$cache->set($key, $res, $expire_time);
}
}
return $res;
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
可以多添加对查询语句结果的判断及异常,这样能够减少查询次数提高效率。
如果说性能也只有empty($res),至于要怎么判断要看你返回值是什么,如果是非bool型,那可以用if($res === false),可以根据你的结果来判断,这样可以让你少查几次数据库。
没有发现有啥隐患
要挑剌的话``是不是你的sql写的不够严谨`要防止sql注入
是不是说你用empty($res)来判断有点问题,因为$res有可能是是空字符串、0、false等值,遇到这样的值的时候,你就多操作了一次数据库,以及多set了一次memcached,用下面的代码来判断吧:
if(isset($res))
//如果这个变量存在,不管他是不是空值
.....
//if($res == NULL or $res == '')
//如果这个变量等于空值(NULL)或者是空字符串('')