从 mysql_connect() 获取 PHP PDO 连接?

2023-04-07php开发问题
1

本文介绍了从 mysql_connect() 获取 PHP PDO 连接?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

我有一个旧的 PHP/MySQL 应用程序,它调用 mysql_connect().大量现有的下游代码使用此连接直接或通过包装器进行 mysql_query() 调用.

I have a legacy PHP/MySQL app that calls mysql_connect(). Tons of existing downstream code makes mysql_query() calls, either directly or through wrappers, using this connection.

对于我在应用程序上开发的新代码,我想开始使用 PDO.

For new code that I develop on the app, I would like to start using PDO.

如果我使用相同的主机/用户/密码/dbname 凭据建立 PDO 连接,我是否很幸运,在幕后,PHP 将重新使用原始连接?或者 PHP 是否会创建到服务器的两个不同的连接(不合需要,尽管完全可以理解)?

If I make a PDO connection using the same host/user/pass/dbname credentials, might I be so lucky that under the hood, PHP will re-use the original connection? Or will PHP create two distinct connections to the server (undesirable, albeit totally understandable)?

谢谢!

推荐答案

如果您使用两个不同的 API(即 mysql_* 和 PDO),PHP 将生成两个不同的连接.

If you are using two different APIs (i.e. mysql_* and PDO), PHP will generate two different connections.


并且,作为证明",请考虑这部分代码:


And, as a "proof", consider this portion of code :

$db = mysql_connect('localhost', 'USER', 'PASSWORD');
$pdo = new PDO('mysql://@localhost/astralblog', 'USER', 'PASSWORD');
sleep(5);


运行这将在 MySQL 服务器上产生两个不同的连接——它将休眠 5 秒:


Running this will cause two distinct connections, on the MySQL server -- which will sleep for 5 seconds :

mysql> show processlist;
+----+------------+-----------------+------------+---------+------+-------+------------------+
| Id | User       | Host            | db         | Command | Time | State | Info             |
+----+------------+-----------------+------------+---------+------+-------+------------------+
| 41 | astralblog | localhost:46551 | astralblog | Sleep   |  188 |       | NULL             |
| 42 | astralblog | localhost:46552 | astralblog | Sleep   |  188 |       | NULL             |
| 43 | astralblog | localhost       | astralblog | Query   |    0 | NULL  | show processlist |
| 64 | astralblog | localhost       | NULL       | Sleep   |    4 |       | NULL             |
| 65 | astralblog | localhost       | NULL       | Sleep   |    4 |       | NULL             |
+----+------------+-----------------+------------+---------+------+-------+------------------+
5 rows in set (0,00 sec)

(有问题的连接是最后两个,在我启动PHP脚本时出现,5秒后消失)

这篇关于从 mysql_connect() 获取 PHP PDO 连接?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

The End

相关推荐

PHP实现DeepL翻译API调用
DeepL的翻译效果还是很强大的,如果我们要用php实现DeepL翻译调用,该怎么办呢?以下是代码示例,希望能够帮到需要的朋友。 在这里需要注意,这个DeepL的账户和api申请比较难,不支持中国大陆申请,需要拥有香港或者海外信用卡才行,没账号的话,目前某宝可以...
2025-08-20 php开发问题
168

PHP通过phpspreadsheet导入Excel日期数据处理方法
PHP通过phpspreadsheet导入Excel日期,导入系统后,全部变为了4开头的几位数字,这是为什么呢?原因很简单,将Excel的时间设置问文本,我们就能看到该日期本来的数值,上图对应的数值为: 要怎么解决呢?进行数据转换就行,这里可以封装方法,或者用第三方的...
2024-10-23 php开发问题
287

mediatemple - 无法使用 codeigniter 发送电子邮件
mediatemple - can#39;t send email using codeigniter(mediatemple - 无法使用 codeigniter 发送电子邮件)...
2024-08-23 php开发问题
11

Laravel Gmail 配置错误
Laravel Gmail Configuration Error(Laravel Gmail 配置错误)...
2024-08-23 php开发问题
16

将 PHPMailer 用于 SMTP 的问题
Problem with using PHPMailer for SMTP(将 PHPMailer 用于 SMTP 的问题)...
2024-08-23 php开发问题
4

关于如何在 GoDaddy 服务器中使用 PHPMailer 设置 SMTP 的问题
Issue on how to setup SMTP using PHPMailer in GoDaddy server(关于如何在 GoDaddy 服务器中使用 PHPMailer 设置 SMTP 的问题)...
2024-08-23 php开发问题
17