[MySQL连接通过mysql cli快速,但使用PDO则较慢

问题描述 投票:1回答:1

我有一个在Google Cloud上运行的MySQL数据库。它具有SSL强制性,因此我使用证书和密钥来连接到它:

  • 在命令行上,我使用:mysql --ssl-ca=/path/to/server-ca.pem --ssl-cert=/path/to/client-cert.pem --ssl-key=/path/to/client-key.pem --host=ip-address --user=username --password
  • 对于PDO,我使用PDO::MYSQL_ATTR_SSL_CAPDO::MYSQL_ATTR_SSL_CERTPDO::MYSQL_ATTR_SSL_KEY选项指示所需的文件。

两个连接都可以正常工作,只是PHP中的PDO连接非常慢。 CLI方法需要毫秒来连接和执行查询,而PDO方法对于相同数量的连接则要花费5到10倍的时间。我在同一台计算机上尝试了这两种方法,因此这似乎不是硬件/网络问题。 PDO会在这里引起问题吗?

我正在使用Laravel,以防可能相关。

更新:我尝试过的事情

  • 在同一服务器上运行任何其他PHP脚本(不包括MySQL连接):速度非常快。
  • 运行一个连接到127.0.0.1 / localhost上的数据库并执行查询的PHP脚本:非常快。
  • 使用MySQL CLI连接和查询(如问题中已经提到的:非常快-尽管很难验证有多快,所以我可以想象它。)>
  • 使用所有相同的设置通过不同机器从PHP / PDO连接并查询:非常慢,就像我尝试过的原始机器一样。
  • 所以我还没有尝试过的唯一方法就是关闭SSL / TLS。不幸的是,出于安全原因,我无法在此实例上执行此操作。另外,基于使用CLI的SSL / TLS连接非常快的事实,我得出结论,它必须与特定于PHP或PDO的东西有关。

我将自己进行一些调试,并在获得相关结果后将其添加。

我有一个在Google Cloud上运行的MySQL数据库。它具有SSL强制性,因此我使用证书和密钥来连接它:在命令行上,我使用:mysql --ssl-ca = / path / to / server-ca.pem --ssl-cert =。 。

php mysql laravel pdo google-cloud-platform
1个回答
0
投票

我最终选择了Google Cloud Compute VM来托管我的PHP,然后通过私有IP连接。看来这可行。

© www.soinside.com 2019 - 2024. All rights reserved.