摘要:手冊(cè)中數(shù)據(jù)庫(kù)擴(kuò)展一章有兩部分?jǐn)?shù)據(jù)庫(kù)抽象層針對(duì)各數(shù)據(jù)庫(kù)系統(tǒng)對(duì)應(yīng)的擴(kuò)展,已經(jīng)是足夠的說(shuō)明了,要更深刻的理解可去研讀。首先,直接的想法是,應(yīng)該為不同的數(shù)據(jù)庫(kù)實(shí)現(xiàn)不同的數(shù)據(jù)庫(kù)抽象層,調(diào)用客戶端庫(kù)來(lái)使用。
PHP/MySQL是主流的應(yīng)用開(kāi)發(fā)搭配方式,印象中PHP支持使用很多種數(shù)據(jù)庫(kù),而且MySQL就有mysql、mysqli、pdo三種API可用。本文旨在從PHP數(shù)據(jù)庫(kù)訪問(wèn)設(shè)計(jì)的思路為軸,簡(jiǎn)單的捋清這些關(guān)系。
PHP手冊(cè)中《數(shù)據(jù)庫(kù)擴(kuò)展》一章有兩部分:數(shù)據(jù)庫(kù)抽象層、針對(duì)各數(shù)據(jù)庫(kù)系統(tǒng)對(duì)應(yīng)的擴(kuò)展,已經(jīng)是足夠的說(shuō)明了,要更深刻的理解可去研讀。
首先,直接的想法是,PHP應(yīng)該為不同的數(shù)據(jù)庫(kù)實(shí)現(xiàn)不同的數(shù)據(jù)庫(kù)抽象層,調(diào)用客戶端庫(kù)API來(lái)使用DBMS。如下圖:
然后,考慮這個(gè)場(chǎng)景:當(dāng)PHP應(yīng)用寫好后,環(huán)境數(shù)據(jù)庫(kù)不同時(shí),就要用對(duì)應(yīng)的數(shù)據(jù)庫(kù)抽象層重寫項(xiàng)目所有數(shù)據(jù)庫(kù)相關(guān)代碼。所以能否把訪問(wèn)抽象出來(lái),用不同數(shù)據(jù)庫(kù)時(shí),只要切換不同實(shí)現(xiàn)就ok了。如下圖:
最后,主流選用MySQL當(dāng)然是既可以使用mysql、mysqli兩種數(shù)據(jù)庫(kù)抽象層,又可以使用PDO數(shù)據(jù)訪問(wèn)抽象層(須安裝PDO_MYSQL擴(kuò)展實(shí)現(xiàn)PDO接口)。如下圖:
當(dāng)然任何一個(gè)數(shù)據(jù)庫(kù)抽象層,都要在PHP編譯時(shí)都要指定數(shù)據(jù)庫(kù)的客戶端庫(kù)以使用數(shù)據(jù)庫(kù)服務(wù)器。以MySQL為例,推薦用mysqlnd庫(kù),配置項(xiàng):
--with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-mysql=mysqlnd
現(xiàn)在是不是清晰些了呢?
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/17516.html
摘要:手冊(cè)中數(shù)據(jù)庫(kù)擴(kuò)展一章有兩部分?jǐn)?shù)據(jù)庫(kù)抽象層針對(duì)各數(shù)據(jù)庫(kù)系統(tǒng)對(duì)應(yīng)的擴(kuò)展,已經(jīng)是足夠的說(shuō)明了,要更深刻的理解可去研讀。首先,直接的想法是,應(yīng)該為不同的數(shù)據(jù)庫(kù)實(shí)現(xiàn)不同的數(shù)據(jù)庫(kù)抽象層,調(diào)用客戶端庫(kù)來(lái)使用。 PHP/MySQL是主流的應(yīng)用開(kāi)發(fā)搭配方式,印象中PHP支持使用很多種數(shù)據(jù)庫(kù),而且MySQL就有mysql、mysqli、pdo三種API可用。本文旨在從PHP數(shù)據(jù)庫(kù)訪問(wèn)設(shè)計(jì)的思路為軸,簡(jiǎn)單的...
摘要:具體參考基于擴(kuò)展實(shí)現(xiàn)真正的數(shù)據(jù)庫(kù)連接池方式三加上參考文檔參數(shù)化查詢?yōu)槭裁茨軌蚍乐棺⑷? pdo防sql注入原理 PdoTest.php class PdoTest() { protected $db; protected $user; protected $pass; public function __construct($user = root,...
摘要:的毫秒級(jí)超時(shí)也有問(wèn)題。。中超時(shí)實(shí)現(xiàn)一初級(jí)最簡(jiǎn)單的超時(shí)實(shí)現(xiàn)秒級(jí)超時(shí)思路很簡(jiǎn)單鏈接一個(gè)后端,然后設(shè)置為非阻塞模式,如果沒(méi)有連接上就一直循環(huán),判斷當(dāng)前時(shí)間和超時(shí)時(shí)間之間的差異。實(shí)際處理這個(gè)調(diào)用的部件在完成后,通過(guò)狀態(tài)通知和回調(diào)來(lái)通知調(diào)用者。 概述 在PHP開(kāi)發(fā)中工作里非常多使用到超時(shí)處理到超時(shí)的場(chǎng)合,我說(shuō)幾個(gè)場(chǎng)景: 異步獲取數(shù)據(jù)如果某個(gè)后端數(shù)據(jù)源獲取不成功則跳過(guò),不影響整個(gè)頁(yè)面展現(xiàn) 為了保...
閱讀 2154·2019-08-29 16:53
閱讀 2723·2019-08-29 16:07
閱讀 2071·2019-08-29 13:13
閱讀 3292·2019-08-26 13:57
閱讀 1355·2019-08-26 13:31
閱讀 2463·2019-08-26 13:22
閱讀 1245·2019-08-26 11:43
閱讀 2112·2019-08-23 17:14