问题标签 [mysqlnd]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1415 浏览

php - 如何在 2 个不同的 PHP 进程之间共享 MySQL 连接

我有一个不寻常的案例,我的网站通过沙箱运行两个完全不同的 PHP 进程。我有一个通过 fastcgi 运行的普通网站,并且在中间,fastcgi 进程通过 cli 执行一个沙盒脚本。这两个进程都需要 MySQL 连接,如果有一种方法可以共享该连接,我正在徘徊,因为当沙盒脚本运行时,fastcgi 只是在等待它完成,所以不会有并发。

这将极大地提高我的硬件能力,因为与我目前需要的两个连接不同,每个客户端只需要一个 MySQL 连接。

我总是可以为这种效果编写某种多路复用代理,但是是否有任何运行的解决方案?我真的很感激。

问候。

0 投票
1 回答
4486 浏览

mysql - MAMP 3.1 and MySQL PDO

I just grabbed the latest version of MAMP Pro (3.1) and installed it only to find that it removes MySQL PDO entirely. That's a problem since the framework I'm using requires PDO to connect to the database. I tried grabbing the extensions from the old version of MAMP, but it immediately throws errors.

How do I get MySQL PDO back for MAMP 3.1? I've looked on the site and can't find a downloads page to roll back to the older version.

0 投票
0 回答
436 浏览

php - PHP - 致命错误:调用未定义的方法 mysqli_stmt::get_result()

我将我的项目转移到云托管,现在我遇到了一些问题。据我所知, mysqli_stmt::get_result() 仅适用于 mysql 本机驱动程序。此外,根据文档,它必须在编译 PHP 时添加。

这是我的 phpinfo(): phpinfo

mysqli 不包含在 api 扩展中。我的问题是是否可以在不重新编译 PHP 的情况下以某种方式添加它?

0 投票
1 回答
395 浏览

php - 当 ATTR_EMULATE_PREPARES 设置为 false 并且查询被终止时,MySQL PDO 为空结果集

当 PDO::ATTR_EMULATE_PREPARES 设置为 false 并且您的查询在状态期间被终止(例如 MySQL 工作台 -> 客户端连接 -> 右键单击​​ -> 终止查询):“发送数据”、PDO“查询”或“执行”方法时,返回空 PDO 语句。PDO 应该抛出一个异常(仅当 PDO::ATTR_ERRMODE 设置为 PDO::ERRMODE_EXCEPTION 时)或返回 false 而不是 PDOStatement。

因此,您的应用程序会收到空的结果集,尽管该查询应该返回一些数据。没有办法处理这种情况。当您在收到的 PDOStatement 上运行 errorCode() 时,您会得到:'00000',errorInfo() 返回一个数组:

我正在运行:MySQL 5.6.22、PHP 5.6.4、pdo_mysql - mysqlnd 5.0.11-dev - 20120503

这使我假设 PDO 或 MySQL 中存在错误。

这里解释:PDO MySQL: Use PDO::ATTR_EMULATE_PREPARES or not? 对于 MySQL >=5.1.17,建议依赖 MySQL 并关闭仿真。

是否不推荐使用 PDO 仿真?

当我将其保留为默认(启用)时,可能会对我的应用程序产生什么影响?

我个人认为这是一个非常关键的问题,因为当出现问题(查询执行失败等)时,您的应用程序认为实际上没有数据。想象一下,您的应用程序没有触发购买女朋友生日花的提醒?纯粹的邪恶。

笔记

查询中断状态时:

您会收到带有消息的 PDOException:

即使处于“发送数据”状态,当您终止该查询执行时,您也会得到完全相同的异常,但 PDO::ATTR_EMULATE_PREPARES 必须设置为 true。

0 投票
0 回答
65 浏览

prepared-statement - MySQLi_stmt::get_result()

我有一个完全离线工作的 php 应用程序(Windows)。但是,当我托管它时,我收到一个错误;调用未定义的方法 mysqli_stmt::get_result()。我知道 get_result() 需要 mysqlnd 驱动程序才能工作。我注意到一些使用 linux 服务器的 web 主机没有安装 mysqlnd 驱动程序。为什么他们安装驱动程序太难了?有人可以推荐一个支持它的网络主机,或者在不重写代码的情况下解决这个问题的另一种方法吗?我知道我可以使用 bind_results() 而不是 get_results(),我将来会使用它。但是在当前应用程序中使用它会涉及重写太多代码。谢谢。

0 投票
1 回答
1169 浏览

php - PHP mysqlnd sha256_password 插件“访问被拒绝”,用户从 cli mysql 工作

我正在尝试通过 sha256 使用 SSL 和密码加密来保护 mysql 连接。我的设置在 cli mysql 和使用本机 mysql 密码时按预期工作。当尝试使用 sha256 密码以用户身份连接时,我得到“HY000/1045):用户 'sha256user'@'192.168.120.45' 的访问被拒绝(使用密码:YES)”,但我可以通过 cli mysql 连接同一个用户。我在本地和从远程主机尝试时都有同样的问题。

我的php设置:

当我使用具有“本机密码”的用户时,PHP 使用 SSL 连接。

PHP连接代码:

编辑: MySQL 在本地编译:

有谁知道在哪里寻找问题?

0 投票
1 回答
910 浏览

php - mysqlnd 明显比使用 PDO 的 libmysql 慢

我只是切换到 mysqlnd 以便能够使用http://php.net/manual/en/book.mysqlnd-ms.php但与 libmysql 相比,我看到一些严重的性能下降。

NewRewlic 显示切换到 mysqlnd https://db.tt/68r9RfhJ后在 PHP 上花费了更多 100 毫秒

我创建了一个基准来重现问题,这很简单:

执行时间处理时间:

  • libmysql - ~2 秒
  • mysqlnd - 约 3 秒(多 50%)

版本信息:

  • PHP版本:PHP 5.5.9-1ubuntu4.9
  • 客户端 API 版本 => mysqlnd 5.0.11-dev - 20120503 - $Id: bf9ad53b11c9a57efdb1057292d73b928b8c5c77 $
  • 客户端 API 库版本 => mysqlnd 5.0.11-dev - 20120503 - $Id: bf9ad53b11c9a57efdb1057292d73b928b8c5c77 $

谁能解释一下它背后的原因以及如何解决它?

  1. 缓慢主要发生在 PDO 上。
  2. mysqli 似乎没有受到太大影响。
  3. 由于使用了 Doctrine,我无法切换到 mysqli。
  4. 赶上 libmysql 速度的唯一方法是禁用对 MySQL ( setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, false)) 的查询的缓冲,由于变化的特性和可能的​​副作用,我在生产中无法轻松做到这一点。
0 投票
1 回答
509 浏览

php - 致命错误:调用未定义的方法 mysqli_stmt::get_result() in

我正在使用准备好的语句,但我遇到了这个问题:

致命错误:调用未定义的方法 mysqli_stmt::get_result() in ...

我在 xampp 和 get_result(); 完美运行,但是我有一个安装了 cPanel/WHM 的专用服务器,我收到了这个错误。我已经安装了 MYSQLND 重新启动了系统,但仍然出现错误。

我的代码:

有人能帮帮我吗?

0 投票
1 回答
2460 浏览

php - 如何将 phpMyAdmin 与 mysqlnd 一起使用

当我运行带有完整错误报告的 php 代码时,我得到:

警告:mysqli::mysqli():标头和客户端库次要版本不匹配。

我发现我应该通过卸载 mysqli 来切换到 mysqlnd,因为它在这里讨论: Headers and client library minor version mismatch

迁移后,我看到 phpMyAdmin 不再工作。所以我不得不卸载 php-mysqlnd 包并再次安装 php-mysql。

所以我的问题是:“phpMyAdmin 能否与 mysqlnd 一起工作?”

0 投票
1 回答
1384 浏览

php - mysql 与 mysqli。mysqli 慢吗?

我终于切换到mysqli。

但是,我发现了显着的性能差异。

我有一个脚本可以进行大约 25.000 次查询。该脚本使用 mysqli 和 mysqlnd 作为驱动程序需要 15 秒,而使用 MySQL 和旧的 MySQL 客户端库需要 10 秒。

在这两种情况下,原始 SQL 时间都是 7.7 秒。

必须是 PHP 和 MySQL 之间的连接时间才能产生差异。

mysqli 比旧的 mysql 慢吗?

我已经定位了连接过程中的性能差异。

我将这些时间记录到脚本中。而且时差大约4秒