php libmysqlclient,什么是php?以及mysqlnd与libmysqlclient
今天想徹底搞清楚php與mysql的關系,于是在php官方網站(http://php.net/manual/en/mysqli.installation.php)
看了一下mysqli,mysql。感覺還是云里霧里,里面有提到:libmysqlclient與mysqlnd,看了下面的文章,清楚了很多。
1. PHP拓展
1.1 PHP核心
PHP的核心是由兩個獨立的部分組成的。
在最底層是Zend Engine (ZE)。ZE 負責把人類可以理解的腳本解析成機器可以理解的符號(token),然后在一個進程空間內執行這些符號。ZE還負責內存管理,變量作用域,以及函數調用的調度。
另一部分是PHP。PHP負責與SAPI層(Server Application Programming Interface,經常被用來與Apache, IIS, CLI, CGI等host環境進行關聯)的交互以及綁定。它也為safemode和openbasedir檢查提供了一個統一的控制層,就像streams層把文件和網絡I/O與用戶空間函數(例如fopen(),fread()和fwrite())關聯起來一樣。
1.2 拓展形式
PEAR。PEAR是PHP擴展與應用庫(the PHP Extension and Application Repository)的縮寫。它是一個PHP擴展及應用的一個代碼倉庫,簡單地說,PEAR就是PHP的CPAN(Perl第三方代碼庫)。
PECL。PECL(PHP Extension Community Library),PHP的擴展庫,它提供了一系列已知的擴展庫,由C++等其他語言編寫而成,以.so形式出現,.so 為共享庫,是shared object,用于動態連接的,和dll差不多,為比PEAR更快,但是與PEAR不同的是,PECL需要在服務器上配置并被注冊到主機中。
最直接的表述:Pear是PHP的上層擴展,Pecl是PHP的底層擴展。
2. MYSQL拓展
2.1 如何訪問MYSQL數據庫
可以使用的PHP拓展有這么幾個:
mysql
mysqli
pdo
其中因為mysql是面向過程的,而且無法使用新版本MySQL帶來的一些高級特性,現在已經不推薦使用。推薦使用mysqli以及pdo拓展。
但是這三種數據庫訪問方式,在PHP拓展的角度上看,還是比較上層的拓展,依賴更底層的庫去連接和訪問數據庫。
底層的庫,我們目前有這么兩個:
libmysqlclient
mysqlnd
但是決定使用這兩個庫中的那一個,是PHP語言編譯時的決定,一旦PHP編譯完成以后,要更改估計比較困難(我沒有嘗試過,因此不太肯定)。
2.2 libmysqlclient
這是一個根據 MySQL client/server 協議,使用C語言實現的庫。有很多的客戶端api使用libmysqlclient這個庫去和MySQL Server進行通信(Exceptions are except Connector/J and Connector/Net.)。
2.3 mysqlnd
MySQL Native Driver實現和libmysqlclient同樣的功能。但MySQL Native Driver是PHP 5.3.0 官方的代碼。
mysqlnd 和 libmysqlclient最大的不同是,mysqlnd 針對與PHP的應用交互進行優化,而libmysqlclient是早期為C應用程序設計的,并沒有針對性的優化。
另外,mysqlnd 可以支持很多高級的特性,比如prepared語句支持(曾經在這個prepare的問題上被坑過,當時用的正是libmysqlclient)。
2.4 性能對比
C語言操作mysql
php中 mysqli, pdo 可以用 mysqlnd 或 libmysqlclient 實現 前者 從 php 5.3.0起已內置到php中, 并且支持更多的特性,推薦用 mysqlnd mysq ...
1 Easy Read/Write Splitting with PHP’s MySQLnd
以下均是使用翻譯軟件翻譯的! Note: This is part one in our Extending MySQL with PHP's MySQLnd Series, read part 2 ...
交叉編譯總結 libosscore.a libcurl.a libmysqlclient.a
把工程文件交叉編譯到arm上運行,著實花費了一番功夫. 首先遇到的錯誤是 X uses VFP register arguments, B does not 百度了一下,發現是硬浮點和軟浮點的問題,原 ...
mysqlnd cannot connect 連接錯誤處理方法
mysqlnd cannot connect to MySQL 4.1+ using the old insecure authentication. Please use an administra ...
phpinfo有mysqlnd沒有mysql
這個著實是個坑,使用phpinfo查看,明明有mysqlnd這個項目,就是找不到mysql.以前用直接運行php.exe的方法可以看到錯誤,可是這次就沒有任何錯誤. 中間把php的安裝路徑添加到了系統 ...
Python使用MySQLdb報Library not loaded: libmysqlclient.18.dylib錯誤
Library not loaded: libmysqlclient.18.dylib就是找不到這個文件,首先要確定是否有這個文件 可以使用find命令,確認位置后可以使用如下兩種方法:1.制作軟連接 ...
mysqlnd cannot connect to MySQL 4.1+
phpMyAdmin - error #2000 - mysqlnd cannot connect to MySQL 4.1+ using the old insecure authenticatio ...
mysql: error while loading shared libraries: libmysqlclient.so.16
[root@host_41 mysql]# mysqlmysql: error while loading shared libraries: libmysqlclient.so.16: cannot ...
隨機推薦
java內存泄漏的定位與分析
1.為什么會發生內存泄漏 java?如何檢測內在泄漏呢?我們需要一些工具進行檢測,并發現內存泄漏問題,不然很容易發生down機問題. 編寫java程序最為方便的地方就是我們不需要管理內存的分配和釋放, ...
Link Aggregation and LACP with Open vSwitch
In this post, I’m going to show you how to use link aggregation (via the Link Aggregation Control Pr ...
Windows 10 (or 8)Chrome 觀看視頻發生flash不能加載,即";could't load plugins";原因之一
最近一直如題,不能看視頻,后來發現從一個已經使用管理員權限打開的應用轉到Chrome就可以加載flash,而從桌面打開Chrome就加載不了. 今天再次查找信息,從Ubuntu下Chrome不能加載f ...
Win10開發必備:Visual Studio 2015正式版下載
7月21日凌晨消息,面向大眾用戶的Visual Studio 2015集成開發工具正式版免費試用版已經推出.本文幫大家匯總一下簡體中文社區版.專業版以及企業版在線安裝版以及ISO離線安裝鏡像下載地址. ...
Codeforces 543D Road Improvement(DP)
題目鏈接 Solution 比較明顯的樹形DP模型. 首先可以先用一次DFS求出以1為根時,sum[i](以i為子樹的根時,滿足要求的子樹的個數). 考慮將根從i變換到它的兒子j時,sum[i]產生的 ...
【其他】MySql常用命令
Linux下: 登陸命令 mysql -h [hostname] -u [username] -p [password]修改密碼 mysqladmin –u[username] –p[oldpwd] ...
手動加支付寶遇到的錯誤--iOS
前言 之前調通了支付寶demo,開始往自己工程拖東西吧,我為什么覺得我可能把所以的問題都遇到了呢+_+,趕緊把問題記錄下來 不然下次弄還費勁,加一句,要不真的用ping++吧
ASP.NET Core MVC請求超時設置解決方案
設置請求超時解決方案 當進行數據導入時,若導入數據比較大時此時在ASP.NET Core MVC會出現502 bad gateway請求超時情況(目前對于版本1.1有效,2.0未知),此時我們需要在項 ...
IBase<;T>;
public interface IBase//基類 { IEnumerable SelectAll();//查詢所有 T FindById(int ID);//根 ...
使用requests+BeautifulSoup爬取龍族V小說
這幾天想看龍族最新版本,但是搜索半天發現 沒有網站提供 下載, 我又只想下載后離線閱讀(寫代碼已經很費眼睛了).無奈只有自己 爬取了. 這里記錄一下,以后想看時,直接運行腳本 下載小說. 這里是從?? ...
總結
以上是生活随笔為你收集整理的php libmysqlclient,什么是php?以及mysqlnd与libmysqlclient的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php开发问题及解决方案,PHP开源开发
- 下一篇: 目录遍历漏洞:入侵检测php程序中的目录