Page MenuHomePhabricator

Add a setup warning if MYSQLI_ASYNC is not defined (support for MySQLi async)
Closed, ResolvedPublic

Description

See PHI47. Currently, we do not advise installs to install whatever provides MYSQLI_ASYNC (mysqlnd?), and silently degrade to the less-powerful API if it is not available.

It would be nice to:

  • Figure out what you need to install to get MYSQLI_ASYNC support.
  • Advise installs to install that as an optional extension via a setup issue.

Note that we don't actually execute queries asynchronously today, although we may in the future. The major concrete advantage of MYSQLI_ASYNC today is that we can put a time limit on queries if it is available. Without the async API, we just have to call mysqli_query(...) and hope for the best. Normally this is fine, but the behavior is significantly worse if we issue queries that hang indefinitely. See AphrontMySQLiDatabaseConnection->rawQuery().

Event Timeline

(I'll follow up in T13102 if there's more to be done here, it's possible that some installs are missing this for reasons other than "Ubuntu + apt get install php5-mysql").

I don't run my Phabricator instance on Ubuntu but instead on RHEL6 (and with PHP7, which I know isn't officially support)

I wanted to contribute the steps I took to upgrade RHLE6, if you simply do step 3) then you'll get installation conflicts between the php<XX>-mysql and php<XX>-mysqlnd packages

So as root I did the following:

  1. determine the list of mysql packages installed to determine what php-mysql package your actually using
yum list installed | grep mysql
  1. remove the existing php-msql package
yum remove  php71w-mysql.x86_64
  1. install the MySQL Native driver
yum install php71w-mysqlnd.x86_64
  1. restart all the servers
epriestley mentioned this in Unknown Object (Maniphest Task).May 29 2018, 3:37 PM