国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

PHP程序循環迭代中謹慎操作數據庫

2024-05-04 21:47:55
字體:
來源:轉載
供稿:網友

PHP草根滴我們,一直以為數據庫是萬能,為了實現功能卻很少去考慮效率與數據庫瓶頸問題,比如在一個循環中查詢數據庫,一個迭代方法中查詢數據庫都是非常不可取滴,尤其是前端程序,在訪問量不大,并發少時看不出任何問題,一旦訪問量突增,并發訪問量多時往往就成數據庫服務器負荷過重,嚴重情況會宕機,后果真不堪設想,而且在這種情況下PHP程序員往往很難查具體原因.

先看一個迭代案例代碼,當分類達到1000個以上滴時候,調用一次就要查詢超1000次以上滴數據庫查詢,這樣滴代碼是何其恐怖,不用再細說了吧,代碼如下:

  1. /**  
  2.  * 遞歸獲取分類  
  3.  * @author:xxx  
  4.  * @param $tree_id  
  5.  */ 
  6. function get_child_tree($tree_id = 0)  
  7. {  
  8.     $three_arr = array();  
  9.            
  10.     $sql = “SELECT count(*) FROM TABLE WHERE parent_id = “$tree_id” AND is_show = 1 ";  
  11.     if ($GLOBALS[db]->getOne($sql) || $tree_id == 0)  
  12.     {  
  13.         $child_sql = "SELECT ……";  
  14.         $res = $GLOBALS[db]->getAll($child_sql);  
  15.         foreach ($res AS $row)  
  16.         {  
  17.             if ($row[is_show])  
  18.             {  
  19.                 $arr[id] = $row[cat_id];  
  20.                 ……  
  21.             }  
  22.    
  23.             if ( intval($row[cat_id]) != 0) {  
  24.             $three_arr[$row[cat_id]][cat_id] = get_child_tree($row[cat_id]);  
  25.             ……  
  26.             }  
  27.         }  
  28.     }  
  29.     return $three_arr;  

再有一些例子,有些同學喜歡用while,for等循環中作數據庫查詢操作,同樣是不可取滴,還是那句話,當數據庫并發更新不大,或者訪問量不大滴情況下,數據庫服務器負荷也是很重滴,操作時須謹慎,特別是在作為封裝滴函數內部,因為往后滴程序你會不小心滴多調用幾次這個函數,那造成服務器滴開銷是無法估量滴.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 乐陵市| 崇仁县| 六枝特区| 方山县| 高安市| 北票市| 芜湖市| 镇沅| 慈溪市| 金昌市| 靖远县| 永年县| 横峰县| 交城县| 邹平县| 陈巴尔虎旗| 原平市| 麻城市| 海兴县| 宁波市| 聊城市| 思南县| 清水县| 山西省| 连平县| 大化| 于田县| 泽普县| 咸丰县| 宿州市| 东阿县| 芜湖县| 彰武县| 西乌珠穆沁旗| 绵阳市| 温泉县| 穆棱市| 巩义市| 沁阳市| 永福县| 资兴市|