apache模块方式下:
区别在于当php以apache模块方式运行时, 由于apache有使用进程池, 一个httpd进程结束后会被放回进程池, 这也就使得用pconnect打开的的那个mysql连接资源不被释放, 于是有下一个连接请求时就可以被复用.
这就使得在apache并发访问量不大的时候, 由于使用了pconnect, php节省了反复连接db的时间, 使得访问速度加快. 这应该是比较好理解的.
但是在apache并发访问量大的时候, 如果使用pconnect, 会由于之前的一些httpd进程占用的mysql连接没有close, 则可能会因为mysql已经达到最大连接着, 使得之后的一些请求永远得不到满足.
例如:
若mysql最大连接数设为500, 而apache的最大同时访问数设为2000
假设所有访问都会要求访问db, 而且操作时间会比较长
当前500个请求的httpd都没有结束的时候...之后的httd进程都是无法连接到mysql的(因已经达到mysql最大连接数). 只有当前500个httpd进程结束或被复用才可以连接得到了mysql.
其实这个也很好解释了xgy_p的测试中若操作比较简单, pconnect比connect效率高很多, 而且跟使用jsp的连接池的速度比较接近. 因为这个时候httpd进程可以不断的给复用.
而 当DB操作复杂, 耗时较长时, 因httpd会fork很多并发进程处理, 而先产生的httpd进程不释放db连接, 使得后产生的httpd进程无法连上db. 因为这样没有复用其它httpd进程的mysql连接. 于是会就产生很多连接超时, 像一开始的1000个并发连接测试说几乎都是连接超时就是这个原因.
---
(反进来看jsp用的如果是纯粹的db连接池, 则不会有因为达到mysql连接上限而连不上的问题, 因为jsp的连接池会使得可以等待其它连接使用完毕并复用. )
因此在并发访问量不高时,使用pconnect可以简单提高访问速度, 但在并发量增大后, 是否再使用pconnect就要看程序员的选择了..
就我个人认为, php现在对mysql的连接并没有真正用到连接池, pconnect也只是相当于借了apache的进程池来用, 所以在并发访问量大的时候pconnect并不能很好的提高访问DB效率. 在这一点上. php的确比不上jsp
分享到:
相关推荐
在PHP中,`mysql_connect`和`mysql_pconnect`都是用于建立与MySQL数据库的连接,但它们之间存在着关键的区别。`mysql_connect`是标准的连接函数,它在每次调用时都会创建一个新的数据库连接,而在完成操作后,该连接...
本文将深入介绍 PHP 中用于连接和操作 MySQL 数据库的一些核心函数,包括 `mysql_connect()`, `mysql_pconnect()`, `mysql_close()`, `mysql_select_db()`, 和 `mysql_query()`。 #### 1. 连接数据库:`mysql_...
1,连接数据库 mysql_connect or mysql_pconnect 2,选择数据库 mysql_select_db 3,执行SQL查询 mysql_query 4,处理返回的数据 mysql_fetch_array mysql_num_rows mysql_fetch_assoc mysql_fetch_row etc
MySQL 提供了两个函数来建立连接:`mysql_connect()` 和 `mysql_pconnect()`。 1. `mysql_connect()` `mysql_connect()` 函数用来建立一个到 MySQL 服务器的连接。该函数的语法为: ```php resource mysql_connect...
总之,`mysql_pconnect()`是PHP处理MySQL持久连接的一种方式,适用于长时间运行的进程,但需谨慎使用,确保正确管理和释放资源,以避免可能的问题。然而,考虑到`mysql_*`系列函数已被废弃,建议升级到PDO或MySQLi...
在IIS环境下,当使用PHP脚本尝试连接数据库时,可能会遇到一个常见的错误提示:"mysql_connect() - undefined function"。这个问题的出现通常意味着PHP配置中存在一些问题,导致PHP无法正确加载支持MySQL连接的扩展...
1. **连接与关闭**:MySQL API提供了连接到数据库的功能,如`mysql_connect()`和`mysql_pconnect()`,以及断开连接的`mysql_close()`函数。连接时需要指定服务器地址、用户名、密码和数据库名。 2. **查询执行**:`...
`mysql_close()`函数用于关闭之前通过`mysql_connect()`或`mysql_pconnect()`建立的数据库连接。 **示例代码:** ```php $conn = @mysql_connect("localhost", "username", "password") or die("不能连接到MySQL ...
`mysql_pconnect()`与`mysql_connect()`类似,但不同之处在于它创建的是持久连接。这意味着即使脚本结束,连接也不会立即关闭,而是保持打开状态,以便后续请求可以复用同一连接。如果发现已有相同的主机名、用户名...
数据库连接——`mysql_connect()`与`mysql_pconnect()` - **`mysql_connect()`**:此函数用于建立与MySQL服务器的临时连接。参数包括主机名、端口、socket路径、用户名及密码。例如: ```php $conn = @mysql_...
- **mysql_close()**:用于关闭由mysql_connect或mysql_pconnect建立的数据库连接。然而,对于mysql_pconnect,通常不需要显式关闭,因为它会自动管理连接池。 3. **选择数据库** - **mysql_select_db()**:此...
PHP提供了`mysql_connect`和`mysql_pconnect`两个函数。`mysql_connect`用于创建一个非持久性的数据库连接,即在PHP脚本执行完毕后会自动关闭连接。而`mysql_pconnect`创建的是持久连接,这意味着如果在短时间内有...
MySQL 数据库函数库 MySQL 数据库函数库是 PHP 提供的一组函数,用于与 MySQL 数据库进行交互。这些函数可以帮助开发者快速...这些函数可以帮助开发者快速搭建 MySQL 数据库应用程序,提高开发效率和数据库交互性。
11. **mysql_pconnect()**: 类似于`mysql_connect()`,但创建的是持久连接,不会因脚本结束而关闭。这在处理高并发请求时可能有益,因为重用连接可以减少开销。例如,`$connection = mysql_pconnect('localhost', '...
**注意事项**: 为了使代码更清晰,建议使用`mysql_select_db()`和`mysql_query()`组合替代此函数。 #### 六、处理查询结果 **函数**: `mysql_result()` **功能**: 获取并显示查询结果中的特定行和列的数据。 **格式...
主要章节包括建立数据库连接方法如 mysql_connect() 和 mysql_pconnect(), 数据库选择方法如 mysql_select_db() , 数据库查询执行函数 mysql_query() 和 mysql_db_query(), 接着介绍几种数据获取方式,其中包括 ...
3. `mysql_close()`:关闭通过`mysql_connect()`或`mysql_pconnect()`建立的数据库连接。 4. `mysql_select_db()`:选择要在其上执行SQL语句的数据库。如果无法选择或数据库不存在,会返回`FALSE`。 5. `mysql_...