在远程 API 回复后关闭并重新打开 mysql 连接

Closing & reopening mysql connection in after remote API replies

我正在开发一个后端应用程序,需要一些远程 API 请求,根据远程服务的负载,响应需要 1~3 秒。

此后端将获得很多 requests/second,我正在努力实现我的服务器的最佳性能。

我是否应该在调用 API 之前关闭 mysql 连接并在收到回复后重新打开它以释放一些资源?

如果我这样做,会发生什么错误?

重新连接不上怎么办?

我必须在收到请求后存储和更新数据库。

我正在使用纯 PHP 和 MySQL (MySQLi)

如果您的应用程序必须执行一些与数据库无关的耗时任务,那么您应该关闭连接,这样您的 PHP 进程就不会阻塞 MySQL 上的资源服务器。

您可以在 API 通话结束后打开一个新的连接。这样做的明显缺点是您将失去执行交易的能力。交易不能在两个单独的 MySQL 会话中保持打开状态。

一个更好的选择是将长 运行ning 进程从主进程中分离出来。有多种方法可以实现这一点。如果你可以 运行 在后台处理,那将是最好的选择。缓存 long-运行ning 进程也是一个可行的选择。如果用户必须等待整个作业完成,那么您可以采用 2 或 3 步流程。

  1. 用户向服务器发送请求。您的 PHP 代码执行一些数据库操作并将用户重定向到第二步
  2. 另一个 PHP 进程调用 API 并且只执行 API 相关逻辑。没有建立数据库连接。完成后,应用程序会将用户重定向到最后一步。
  3. 您的 PHP 应用程序执行另一组数据库活动和 returns 对用户的最终响应。

当然,对于如此复杂的操作,您的应用程序更有可能失去事务的正确性,因此您必须评估所有优点和缺点。

最后一点。如果您的服务器设置正确,那么您可用的 PHP 个进程应该有相应数量的 MySQL 个进程。这是为了确保如果您的 PHP 进程被 100% 使用并且每个进程都需要执行一些数据库操作,那么您的 MySQL 服务器不应该成为瓶颈。在这种情况下,为什么不简化并在执行 long-运行ning API 调用时保持数据库连接打开?省去很多麻烦。