当前位置: 首页 > 面试题库 >

从mysql_connect()获取PHP PDO连接?

姜献
2023-03-14
问题内容

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

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

如果我使用相同的主机/用户/密码/
dbname凭据建立PDO连接,那么我是否很幸运,在幕后,PHP将重新使用原始连接?还是PHP将创建与服务器的两个不同的连接(虽然完全可以理解,但这是不希望的)?

谢谢!


问题答案:

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

并且,作为“证明”,请考虑以下部分代码

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

运行此命令将在MySQL服务器上导致两个不同的连接-它将hibernate5秒钟:

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秒后消失)



 类似资料:
  • 我正在尝试在建立Tcp连接后建立Udp连接。所有连接状态和控制都通过Tcp进行,但我希望客户端和服务器也能够通过Udp进行通信。这是我的问题。 服务器将有许多客户端在单独的线程上连接到它。我让它 0 在仅绑定 Tcp 的情况下工作正常,但我想使用 Udp。由于 Udp 打孔,我很难侦听 Udp 上的特定endpoint,因为endpoint在与 NAT 设备通信时可能会发生变化。 因此,简单地提出

  • 我有一张siswa和kelas的联合表格。在kelas表中有一列idSiswa,它来自siswa表的id。问题是当kelas加入时,我如何从他那里获得id。当我尝试获取id时,它显示了来自siswa表的id,而不是来自kelas表的id,我也已经使用了右连接和左连接,但仍然没有得到答案 我使用来自laravel的查询生成器来运行查询,这是我的查询

  • 问题内容: 我已经在几个线程中看到了答案,但对我却没有解决,而且由于我的问题偶尔发生,因此问这个问题是否有人有任何想法。 我正在使用jedis版本2.8.0,Spring Data Redis版本1.7.5。和redis服务器版本2.8.4用于我们的缓存应用程序。 我有多个缓存保存在redis中,并且从redis获得请求。我正在使用spring数据redis API保存和获取数据。 所有保存和获取

  • 我每5分钟运行一次批处理作业,我不希望其他节点运行同一个作业,因此我使用绝地锁将一个对象锁定5分钟。这样,如果另一个节点试图运行同一个作业,它们就不会得到锁。工作是在获得锁后开始的,当我试图从Redis读取它时,我得到以下异常情况: 这是我的密码 spring启动应用程序。属性文件 作业在开始时执行以下代码以获得锁 之后,redis仓库类试图读取特定模式的值... 这就是我在日志中看到的完全例外。

  • 我成功地获得了20个请求的响应,但无法获得其余10个请求的响应。我面临的问题是,在前20个请求使用了20个连接之后,其余的10个请求无法从池中获得jedis连接,因此我得到以下例外情况: 我已经在网上搜索,但没有找到解决办法。有人能帮我吗?

  • 问题内容: 我正在使用paramiko在远程计算机上通过ssh执行长时间运行的python脚本。就像魅力一样,到目前为止没有问题。 不幸的是,仅在脚本完成后才显示stdout(分别为stderr)!但是,由于执行时间长,我更希望 在打印每行时输出新行 ,而不是在以后输出。 如何做到这一点? 注意:当然可以将输出通过管道传递到文件,并通过另一个ssh会话“减少”该文件,但这非常丑陋,我需要一种更清洁