php - 通过 mysql cli 快速连接 MySQL,但使用 PDO 速度慢

标签 php mysql laravel pdo google-cloud-platform

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

  • 在命令行上,我使用: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 连接):非常快。
  • 运行 PHP 脚本连接到 127.0.0.1/localhost 上的数据库并执行查询:非常快。
  • 使用 MySQL CLI 进行连接和查询(如问题中已经提到的):速度非常快 - 尽管很难验证有多快,所以我可以想象它。
  • 使用所有相同的设置从不同的机器通过 PHP/PDO 连接和查询:非常慢,就像我试过的原始机器一样。

所以我唯一还没有尝试过的是关闭 SSL/TLS。不幸的是,出于安全原因,我不能对这个实例这样做。此外,基于使用 CLI 的 SSL/TLS 连接非常快这一事实,我得出结论,它一定与特定于 PHP 或 PDO 的东西有关。

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

最佳答案

我最终选择了谷歌云计算虚拟机来托管我的 PHP,然后通过私有(private) IP 进行连接。看起来这是可行的。

我不确定 PDO 是否真的比 MySQL CLI 慢,它可能只是看起来如此。

关于php - 通过 mysql cli 快速连接 MySQL,但使用 PDO 速度慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58010429/

相关文章:

php - HTTP_REFERER 行为 - 需要帮助

Laravel 创建下载链接到存储

php - 如何使用 PHP 删除 SQL 行?

php - 如何找到 WooCommerce 样式表的 Hook 名称

php - 像 stackoverflow 这样的 SQL 搜索查询

mysql - 在同一表中复制数据时排除特定行的插入

javascript - 无法检查从 View 返回的空数据

python - 使用 Python 读取 .xlsx 文件的最快方法

php - laravel 路由直接进入文件夹和文件

javascript - 使用 JavaScript 进行算术