author: selfimpr
blog: http://blog.csdn.net/lgg201
mail: lgg860911@yahoo.com.cn
item
mysql_connect
mysql_pconnect
函數原型
resource mysql_connect($host_port, $user, $passwd, $newlink, $client_flags);
第四個參數$newlink標記是否建立新的資來源物件
resource mysql_pconnect($host_port, $user, $passwd, $client_flags);
allow_persistent指令
設定此指令使得兩個函數行為均和mysql_connect()一致
串連資來源物件擷取
對$host_port, $user, $passwd, $client_flags求雜湊值
在普通資源清單(EG(regular_list))中尋找連線物件(已找到並且沒有設定$newlink強制建立新串連)
檢尋找到的對象是否資源類型
從尋找到的對象中讀取連線物件
將當前擷取的連線物件設定為全域預設連線物件
增加連線物件的引用計數, 設定zval屬性返回
對$host_port, $user, $passwd, $client_flags求雜湊值
從持久化資源清單(EG(persist_list))中尋找連線物件(沒有找到)
檢查max_links配置指令限制是否到達
檢查max_persistent配置指令限制是否到達
分配連線物件(php_mysql_conn)空間
設定連線物件的基礎屬性
初始化驅動層連線物件(mysqlnd/libmysql兩種方式)
設定連線逾時時間
發起驅動層的真實串連請求
構造持久化列表元素對象, 將新連線物件設定到元素中
將連線物件更新到持久化列表中
更新(增加)num_persistent/num_links計數
註冊資源類型傳回值
將當前擷取的串連設定為全域預設連線物件
對$host_port, $user, $passwd, $client_flags求雜湊值
在普通資源清單(EG(regular_list))中尋找連線物件(未找到或設定了$newlink強制建立新串連)
檢查max_links配置指令限制
分配連線物件(php_mysql_conn)空間
設定連線物件基礎屬性
初始化驅動層連線物件(mysqlnd/libmysql)
設定連線逾時時間
發起驅動層的真實串連
將連線物件註冊為資源類型傳回值
將連線物件更新到普通資源清單(EG(regualr_list))中
更新num_links計數
將當前擷取的連線物件設定為全域預設連線物件
對$host_port, $user, $passwd, $client_flags求雜湊值
從持久化資源清單中尋找連線物件(已找到)
檢查尋找到的持久化資源的類型是否匹配
從持久化資源中讀取連線物件
設定連線物件基本屬性
檢查服務端是否主動關閉
如果服務端主動關閉則進行重連
註冊資源類型傳回值
將當前擷取的串連設定為全域預設連線物件
regular_list Vs. persistent_list
regular_list和persistent_list兩者都是HashTable
兩者都是執行全域環境executor_globals的成員
兩者生命週期不同, regular_list在php_request_shutdown()時被釋放, 也就是單個請求處理完成之後釋放, 而persistent_list在php_module_shutdown()的時候調用zend_shutdown()釋放, 也就是在整個進程完成執行時釋放
http://www.bkjia.com/PHPjc/477932.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/477932.htmlTechArticleauthor: selfimpr blog: http://blog.csdn.net/lgg201 mail: lgg860911@yahoo.com.cn item mysql_connect mysql_pconnect 函數原型 resource mysql_connect($host_port, $user, $passwd, $n...