PHP-请教这段代码有何性能问题?

发布于 2017-01-27 13:52:47 字数 325 浏览 1102 评论 4

我一般连接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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

瑾兮 2017-09-07 17:52:13

可以多添加对查询语句结果的判断及异常,这样能够减少查询次数提高效率。

归属感 2017-05-13 08:04:40

如果说性能也只有empty($res),至于要怎么判断要看你返回值是什么,如果是非bool型,那可以用if($res === false),可以根据你的结果来判断,这样可以让你少查几次数据库。

归属感 2017-04-07 15:38:23

没有发现有啥隐患
要挑剌的话``是不是你的sql写的不够严谨`要防止sql注入

泛泛之交 2017-03-29 02:21:06

是不是说你用empty($res)来判断有点问题,因为$res有可能是是空字符串、0、false等值,遇到这样的值的时候,你就多操作了一次数据库,以及多set了一次memcached,用下面的代码来判断吧:

if(isset($res))
//如果这个变量存在,不管他是不是空值
.....
//if($res == NULL or $res == '')
//如果这个变量等于空值(NULL)或者是空字符串('')

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文