php和mysql的合作方式,mysql是通过什么方式跟PHP打交道的?

这篇博客探讨了PHP如何与MySQL进行交互。首先,PHP通常通过C语言扩展与MySQL进行通信,利用C语言编写的mysqldriver动态库。其次,无论是本地还是远程,PHP都是通过socket或TCP/IP连接与MySQL服务器进行跨进程通信。虽然理论上可以在PHP层面实现一个driver直接调用socket库,但出于性能和维护性的考虑,通常不采用这种方式。
摘要由CSDN通过智能技术生成

我觉得问题应该改为"PHP是通过什么方式跟mysql打交道的更加合适"

这里面有几层答案

首先, 可以说PHP是通过与C语言的扩展来和mysql打交道. PHP是可以用C语言写扩展的, 其他语言比如python, ruby, perl都可以. 所以很多情况下用C语言写一点点PHP/Python的扩展, 可以将原来的C语言mysql driver变成PHP/Python的mysql driver, 实际上最后还是在调用mysql的那个C语言版本的动态库(.dll或者.so)

很多东西都是这么来的, 比如opengl的库, crypto库, memcache库等等

再往下一层, 我们也可以说PHP是通过sock或者tcp来连接mysql服务器的. 如果mysql服务器和PHP运行在同一台机器上, 那么可以通过sock或者127.0.0.1的tcp连接与mysql服务器通信, 说白了也就是跨进程通信(即使在本地, 进程间通信往往也使用127.0.0.1+端口号这样的方式, 据说内核优化过, 不会走到网卡, 性能挺高)

如果不在同一台机器上, 那么就是走网卡的tcp连接了

最后, 是不是所有的driver都要用到C语言这一层呢? 如果协议简单, 完全可以在PHP这一层实现一个driver, 然后调用PHP的socket库来实现. 不过处于性能的考虑, 协议的复杂性(mysql服务器的协议), 日后的可维护性(mysql版本升级), 所以基本上没人这么干.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值