今天想彻底搞清楚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相关推荐

  1. /usr/bin/ld: skipping incompatible /usr/lib/mysql/libmysqlclient.so when searching for -lmysqlclient

    详解看原文:http://xingxing5421.blog.163.com/blog/static/1194463192012317105319559/ 在64位系统中,/usr/lib/mysql ...

  2. Nagios显示器mysql定从库: libmysqlclient.so.18: cannot open shared object file: No such

    做mysql的slave时间监控,必须check_mysql文字,check当误差:error while loading shared libraries: libmysqlclient.so.18 ...

  3. php mysql.so 下载_Linux安装php-mysql提示需要:libmysqlclient.so.18()(64bit)的解决办法-Go语言中文社区...

    一.贴上报错: 错误:软件包:2:postfix-2.10.1-6.el7.x86_64 (@anaconda) 需要:libmysqlclient.so.18()(64bit) 可用: 1:mari ...

  4. python 2.7.10 找不到 libmysqlclient.18.dylib 解决方案

    Mac os x 升级到最新版后出现 python MysqlDB 无法找到 libmysqlclient.18.dylib 的问题,尝试的解决方案如下: 1.  升级更新 mysql 到最新版,无效 ...

  5. db_mysql.so_MySQL登陆时提示找不到到libmysqlclient.so.15

    今天发现原先虚拟机的CentOS系统下的数据库MySQL 竟然一直启动不起来 检查啦好久实在是不知道什么原因 配置文件也修改过啦..还是搞不定 后来想想 算了 反正也没什么资料 重新编译安装下吧. 按 ...

  6. C语言操作mysql

    php中 mysqli, pdo 可以用 mysqlnd 或 libmysqlclient 实现 前者 从 php 5.3.0起已内置到php中, 并且支持更多的特性,推荐用 mysqlnd mysq ...

  7. 安装和配置zabbix-5.0.20

    一.zabbix安装 1.上传包zabbix-5.0.20.tar.gz 到/usr/local/ 下 2.解压包:tar -xzvf zabbix-5.0.20.tar.gz 并且:mv zabbi ...

  8. mysql高可用之MMM

    博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 一.MMM简介: MMM即Multi-M ...

  9. sphinx+coreseek创建中文分词索引

    2019独角兽企业重金招聘Python工程师标准>>> 一:安装sphinx步骤如下: 下载sphinx最新的2.2.11版本 cd /opt/sphinx wget 下载地址 ta ...

最新文章

  1. OA选型 寻找应用中的个性
  2. 使用字节流读取中文的问题
  3. 大幅减少GPU显存占用:可逆残差网络(The Reversible Residual Network)
  4. tcp假连接_ESTABLISHED状态的连接收到 SYN 会回复什么?
  5. (八):构建WineLib DLL
  6. 多益网络与咪咕音乐携手音乐共创 李荣浩领衔唱响神武之夜
  7. php无法创建cookie,php cookie无法正常工作
  8. 广联达登录显示服务器异常去回答,广联达设置服务器异常5
  9. 河北对口计算机计算机网络,河北对口计算机试题及答案.doc
  10. RTMP 协议包头参考
  11. 微信小程序——律师事务所微官网
  12. sdk 今日头条_Unity接入今日头条广告(激励广告)
  13. Vue2系列教程——vue-pdf插件
  14. 专网解决方案:中兴以全光园区解决方案打造智慧园区
  15. 微信公众号平台js逆向分析
  16. 慕尼黑工业大学计算机博士申请条件,慕尼黑大学博士条件
  17. OSChina 周四乱弹 ——今天家里只有我和女室友,我想……
  18. 如何查看Oracle数据库的版本号
  19. hooks引用useRef,报错object is possibly undefined
  20. Typora开始收费了,这可咋整?

热门文章

  1. Spring boot自动注册DispatcherServlet
  2. w7怎么查看电脑配置_2020年之学习UI设计需要什么样的电脑配置?
  3. centos 升级mysql5.6_centos6.9升级mysql5.1到mysql5.6
  4. mysql可以靠索引,而我只能靠打工,加油,打工人!
  5. “面试不败计划”:面试题基础三
  6. Java基础提升篇:equals()与hashCode()方法详解
  7. 网络编程4之UDP协议
  8. 矩阵快速幂求大斐波那契poj3070(java)
  9. JS根据日期比较显示时分或者月日
  10. Apollo之灰度发布