加入收藏 | 设为首页 | 会员中心 | 我要投稿 汽车网 (https://www.0577qiche.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP程序循环迭代中小心操作数据库

发布时间:2023-06-10 13:34:09 所属栏目:PHP教程 来源:
导读:PHP草根滴我们,一直以为数据库是万能,为了实现功能却很少去考虑效率与数据库瓶颈问题,比如在一个循环中查询数据库,一个迭代方法中查询数据库都是非常不可取滴,尤其是前端程序,在访问量不大,并发少时看不出任何问题,一
PHP草根滴我们,一直以为数据库是万能,为了实现功能却很少去考虑效率与数据库瓶颈问题,比如在一个循环中查询数据库,一个迭代方法中查询数据库都是非常不可取滴,尤其是前端程序,在访问量不大,并发少时看不出任何问题,一旦访问量突增,并发访问量多时往往就成数据库服务器负荷过重,严重情况会宕机,后果真不堪设想,而且在这种情况下PHP程序员往往很难查具体原因.

先看一个迭代案例代码,当分类达到1000个以上滴时候,调用一次就要查询超1000次以上滴数据库查询,这样滴代码是何其恐怖,不用再细说了吧,代码如下:

/**  
 * 递归获取分类  
 * @author:xxx  
 * @param $tree_id  
 */ 
function get_child_tree($tree_id = 0)  
{  
    $three_arr = array();  
           
    $sql = “SELECT count(*) FROM TABLE WHERE parent_id = “$tree_id” AND is_show = 1 ";  
    if ($GLOBALS[db]->getOne($sql) || $tree_id == 0)  
    {  
        $child_sql = "SELECT ……";  
        $res = $GLOBALS[db]->getAll($child_sql);  
        foreach ($res AS $row)  
        {  
            if ($row[is_show])  
            {  
                $arr[id] = $row[cat_id];  
                ……  
            }  
   
            if ( intval($row[cat_id]) != 0) {  
            $three_arr[$row[cat_id]][cat_id] = get_child_tree($row[cat_id]);  
            ……  
            }  
        }  
    }  
    return $three_arr;  

(编辑:汽车网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章