伺服器環境 Liunx AS4 PHP5 Mysql5 Apache 2
實用TOP 命令查詢系統性能的時候發現CPU經常到達100%
開始以為是DDOS攻擊……加裝了防火牆(沒起作用)
又開始從liunx系統查詢是不是系統問題,(也沒起作用)
偶爾從網路上發現一篇文章,有人也類似遇到了這樣的問題,但並沒指出具體解決方案,
不過提醒了我,不是系統問題就是程式問題!
這次我開始從新過濾PHP程式碼,偶爾發現很多兄弟寫的程式碼只有“常”連線,竟然沒有Close!
我把所以的頁面都加裝了資料庫關閉,發現CPU一直就保持在1%~10%之間(正常)
所以提醒大家在寫PHP程式的時候不要為了一點懶,導致系統溢位這樣低階的錯誤!
好了就寫倒這裡了,一個小問題花了我幾乎一個下午搞這個!也算是教訓!
把一些mysql常用函式貼上,請牢記!其他型別資料庫舉一反三!
mysql_affected_rows -- 取得前一次 MySQL 操作所影響的記錄行數
mysql_change_user -- 改變活動連線中登入的使用者
mysql_client_encoding -- 返回字符集的名稱
mysql_close -- 關閉 MySQL 連線
mysql_connect -- 開啟一個到 MySQL 伺服器的連線
mysql_create_db -- 新建一個 MySQL 資料庫
mysql_data_seek -- 移動內部結果的指標
mysql_db_name -- 取得結果資料
mysql_db_query -- 傳送一條 MySQL 查詢
mysql_errno -- 返回上一個 MySQL 操作中的錯誤資訊的數字編碼
mysql_error -- 返回上一個 MySQL 操作產生的文字錯誤資訊
mysql_escape_string -- 轉義一個字串用於 mysql_query
mysql_fetch_array -- 從結果集中取得一行作為關聯陣列,或數字陣列,或二者兼有
mysql_fetch_assoc -- 從結果集中取得一行作為關聯陣列
mysql_fetch_field -- 從結果集中取得列資訊並作為物件返回
mysql_fetch_lengths -- 取得結果集中每個輸出的長度
mysql_fetch_object -- 從結果集中取得一行作為物件
mysql_fetch_row -- 從結果集中取得一行作為列舉陣列
mysql_field_flags -- 從結果中取得和指定欄位關聯的標誌
mysql_field_len -- 返回指定欄位的長度
mysql_field_name -- 取得結果中指定欄位的欄位名
mysql_field_seek -- 將結果集中的指標設定為制定的欄位偏移量
mysql_field_table -- 取得指定欄位所在的表名
mysql_field_type -- 取得結果集中指定欄位的型別
mysql_free_result -- 釋放結果記憶體
mysql_get_client_info -- 取得 MySQL 客戶端資訊
mysql_get_host_info -- 取得 MySQL 主機資訊
mysql_get_proto_info -- 取得 MySQL 協議資訊
mysql_get_server_info -- 取得 MySQL 伺服器資訊
mysql_info -- 取得最近一條查詢的資訊
mysql_insert_id -- 取得上一步 INSERT 操作產生的 ID
mysql_list_dbs -- 列出 MySQL 伺服器中所有的資料庫
mysql_list_fields -- 列出 MySQL 結果中的欄位
mysql_list_processes -- 列出 MySQL 程序
mysql_list_tables -- 列出 MySQL 資料庫中的表
mysql_num_fields -- 取得結果集中欄位的數目
mysql_num_rows -- 取得結果集中行的數目
mysql_pconnect -- 開啟一個到 MySQL 伺服器的持久連線
mysql_ping -- Ping 一個伺服器連線,如果沒有連線則重新連線
mysql_query -- 傳送一條 MySQL 查詢
mysql_real_escape_string -- 轉義 SQL 語句中使用的字串中的特殊字元,並考慮到連線的當前字符集
mysql_result -- 取得結果資料
mysql_select_db -- 選擇 MySQL 資料庫
mysql_stat -- 取得當前系統狀態
mysql_tablename -- 取得表名
mysql_thread_id -- 返回當前執行緒的 ID
mysql_unbuffered_query -- 向 MySQL 傳送一條 SQL 查詢,並不獲取和快取結果的行。
伺服器環境 Liunx AS4 PHP5 Mysql5 Apache 2
實用TOP 命令查詢系統性能的時候發現CPU經常到達100%
開始以為是DDOS攻擊……加裝了防火牆(沒起作用)
又開始從liunx系統查詢是不是系統問題,(也沒起作用)
偶爾從網路上發現一篇文章,有人也類似遇到了這樣的問題,但並沒指出具體解決方案,
不過提醒了我,不是系統問題就是程式問題!
這次我開始從新過濾PHP程式碼,偶爾發現很多兄弟寫的程式碼只有“常”連線,竟然沒有Close!
我把所以的頁面都加裝了資料庫關閉,發現CPU一直就保持在1%~10%之間(正常)
所以提醒大家在寫PHP程式的時候不要為了一點懶,導致系統溢位這樣低階的錯誤!
好了就寫倒這裡了,一個小問題花了我幾乎一個下午搞這個!也算是教訓!
把一些mysql常用函式貼上,請牢記!其他型別資料庫舉一反三!
mysql_affected_rows -- 取得前一次 MySQL 操作所影響的記錄行數
mysql_change_user -- 改變活動連線中登入的使用者
mysql_client_encoding -- 返回字符集的名稱
mysql_close -- 關閉 MySQL 連線
mysql_connect -- 開啟一個到 MySQL 伺服器的連線
mysql_create_db -- 新建一個 MySQL 資料庫
mysql_data_seek -- 移動內部結果的指標
mysql_db_name -- 取得結果資料
mysql_db_query -- 傳送一條 MySQL 查詢
mysql_errno -- 返回上一個 MySQL 操作中的錯誤資訊的數字編碼
mysql_error -- 返回上一個 MySQL 操作產生的文字錯誤資訊
mysql_escape_string -- 轉義一個字串用於 mysql_query
mysql_fetch_array -- 從結果集中取得一行作為關聯陣列,或數字陣列,或二者兼有
mysql_fetch_assoc -- 從結果集中取得一行作為關聯陣列
mysql_fetch_field -- 從結果集中取得列資訊並作為物件返回
mysql_fetch_lengths -- 取得結果集中每個輸出的長度
mysql_fetch_object -- 從結果集中取得一行作為物件
mysql_fetch_row -- 從結果集中取得一行作為列舉陣列
mysql_field_flags -- 從結果中取得和指定欄位關聯的標誌
mysql_field_len -- 返回指定欄位的長度
mysql_field_name -- 取得結果中指定欄位的欄位名
mysql_field_seek -- 將結果集中的指標設定為制定的欄位偏移量
mysql_field_table -- 取得指定欄位所在的表名
mysql_field_type -- 取得結果集中指定欄位的型別
mysql_free_result -- 釋放結果記憶體
mysql_get_client_info -- 取得 MySQL 客戶端資訊
mysql_get_host_info -- 取得 MySQL 主機資訊
mysql_get_proto_info -- 取得 MySQL 協議資訊
mysql_get_server_info -- 取得 MySQL 伺服器資訊
mysql_info -- 取得最近一條查詢的資訊
mysql_insert_id -- 取得上一步 INSERT 操作產生的 ID
mysql_list_dbs -- 列出 MySQL 伺服器中所有的資料庫
mysql_list_fields -- 列出 MySQL 結果中的欄位
mysql_list_processes -- 列出 MySQL 程序
mysql_list_tables -- 列出 MySQL 資料庫中的表
mysql_num_fields -- 取得結果集中欄位的數目
mysql_num_rows -- 取得結果集中行的數目
mysql_pconnect -- 開啟一個到 MySQL 伺服器的持久連線
mysql_ping -- Ping 一個伺服器連線,如果沒有連線則重新連線
mysql_query -- 傳送一條 MySQL 查詢
mysql_real_escape_string -- 轉義 SQL 語句中使用的字串中的特殊字元,並考慮到連線的當前字符集
mysql_result -- 取得結果資料
mysql_select_db -- 選擇 MySQL 資料庫
mysql_stat -- 取得當前系統狀態
mysql_tablename -- 取得表名
mysql_thread_id -- 返回當前執行緒的 ID
mysql_unbuffered_query -- 向 MySQL 傳送一條 SQL 查詢,並不獲取和快取結果的行。