php连接数据库调用原理 php连接数据库有什么用

php连接mysql数据库原理是怎样的?如果想把一个已做好的php网站,连接到已安装好的mysql数据库怎么做?外部语言只是与mysql库里面php连接数据库调用原理的函数建立关系php连接数据库调用原理 , 并操作、获取mysql库返回值,,所以php连接mysql原理这个问题没有什么好答的php连接数据库调用原理 , 第二个问题,在你的php网站要调用mysql数据库内容的地方,直接拿mysql函数库中的mysql_conetct等函数来操作就行了 。
php-fpm怎么连接的mysql们都知道,php是不能直接操作 mysql的,他需要通过扩展提供接口调用,php的mysql扩展也好几个 , 只支持面向过程的mysql , 既支持面向过程也支持面向对象的mysqli,只支持面向对象的PDO,当然无论是那个扩展,也只是php语法写法上的区别而已,底层其实是一样的 。
今天我们不讲语法这些老掉牙的东西,我们随便找一个扩展,来分析一下 php底层 和 mysql 之间的通信原理 。
首先我们来理解一下 php-fpm 的工作原理,php-fpm 是一个 php-cgi 进程管理器,其实就是一个连接池,它和nginx配合的工作原理如下 。
我们先从最简单的静态方式入手观察他的工作原理
vim php-fpm.ini
[www]
pm = static
pm.max_children = 5
pm.max_requests = 2
上面三句话的含义是什么呢:
1、static 表示静态以静态方式生成 php-fpm 进程
2、pm.max_children = 5 表示当 php-fpm 启动时就启动 5 个 php-fpm 子进程 等待处理 nginx 发过来的请求
3、pm.max_requests = 2 表示每个 php-fpm 子进程处理 2 个请求就销毁 , 当然父进程每次看到有销毁的自然也就会生成新的子进程
我们来简单验证一下这个说法:
首先重启 php-fpm,让它复位一下
接下来写一条简单的语句输出当前进程ID
echo "当前 php-fpm 进程ID:".posix_getpid();
不断刷新浏览器观察输出变化
当前 php-fpm 进程ID:24548
当前 php-fpm 进程ID:24549
当前 php-fpm 进程ID:24550
当前 php-fpm 进程ID:24547
【php连接数据库调用原理 php连接数据库有什么用】当前 php-fpm 进程ID:24551
当前 php-fpm 进程ID:24548
当前 php-fpm 进程ID:24549
当前 php-fpm 进程ID:24550
当前 php-fpm 进程ID:24547
当前 php-fpm 进程ID:24551
当前 php-fpm 进程ID:24563
当前 php-fpm 进程ID:24564
当前 php-fpm 进程ID:24565
当前 php-fpm 进程ID:24566
当前 php-fpm 进程ID:24567
当前 php-fpm 进程ID:24563
当前 php-fpm 进程ID:24564
当前 php-fpm 进程ID:24565
当前 php-fpm 进程ID:24566
当前 php-fpm 进程ID:24567
当前 php-fpm 进程ID:24568
当前 php-fpm 进程ID:24569
当前 php-fpm 进程ID:24570
当前 php-fpm 进程ID:24571
当前 php-fpm 进程ID:24572
当前 php-fpm 进程ID:24568
当前 php-fpm 进程ID:24569
当前 php-fpm 进程ID:24570
当前 php-fpm 进程ID:24571
当前 php-fpm 进程ID:24572
可以看得出,第一批id不是按照顺序执行的 , 进程id为24547的进程是在第四位处理的 , 然后从下面开始 , 所有id都是顺序执行的而且每次生成的一批id都是递增,是不是有种mysql自增主键的赶脚呢?
这里需要注意的是,无论是静态还是下面的动态配置方式,只要没有设置 max_requests ,那么进程是不会销毁的,也就是说当一个进程里面出现死循环或者内存溢出等导致进程僵死的情况出现的时候,处理的进程就会少一个了
好吧理解了静态的处理方式,我们其实也很容易知道这个方式的弊端了,当然我们平时服务器不可能就开5个进程每个进程处理2个请求 , 我们来做一个简单的加减乘除,看看一个服务器应该开多少个 php-fpm 合适

推荐阅读