在远程 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 步流程。
- 用户向服务器发送请求。您的 PHP 代码执行一些数据库操作并将用户重定向到第二步
- 另一个 PHP 进程调用 API 并且只执行 API 相关逻辑。没有建立数据库连接。完成后,应用程序会将用户重定向到最后一步。
- 您的 PHP 应用程序执行另一组数据库活动和 returns 对用户的最终响应。
当然,对于如此复杂的操作,您的应用程序更有可能失去事务的正确性,因此您必须评估所有优点和缺点。
最后一点。如果您的服务器设置正确,那么您可用的 PHP 个进程应该有相应数量的 MySQL 个进程。这是为了确保如果您的 PHP 进程被 100% 使用并且每个进程都需要执行一些数据库操作,那么您的 MySQL 服务器不应该成为瓶颈。在这种情况下,为什么不简化并在执行 long-运行ning API 调用时保持数据库连接打开?省去很多麻烦。
我正在开发一个后端应用程序,需要一些远程 API 请求,根据远程服务的负载,响应需要 1~3 秒。
此后端将获得很多 requests/second,我正在努力实现我的服务器的最佳性能。
我是否应该在调用 API 之前关闭 mysql 连接并在收到回复后重新打开它以释放一些资源?
如果我这样做,会发生什么错误?
重新连接不上怎么办?
我必须在收到请求后存储和更新数据库。
我正在使用纯 PHP 和 MySQL (MySQLi)
如果您的应用程序必须执行一些与数据库无关的耗时任务,那么您应该关闭连接,这样您的 PHP 进程就不会阻塞 MySQL 上的资源服务器。
您可以在 API 通话结束后打开一个新的连接。这样做的明显缺点是您将失去执行交易的能力。交易不能在两个单独的 MySQL 会话中保持打开状态。
一个更好的选择是将长 运行ning 进程从主进程中分离出来。有多种方法可以实现这一点。如果你可以 运行 在后台处理,那将是最好的选择。缓存 long-运行ning 进程也是一个可行的选择。如果用户必须等待整个作业完成,那么您可以采用 2 或 3 步流程。
- 用户向服务器发送请求。您的 PHP 代码执行一些数据库操作并将用户重定向到第二步
- 另一个 PHP 进程调用 API 并且只执行 API 相关逻辑。没有建立数据库连接。完成后,应用程序会将用户重定向到最后一步。
- 您的 PHP 应用程序执行另一组数据库活动和 returns 对用户的最终响应。
当然,对于如此复杂的操作,您的应用程序更有可能失去事务的正确性,因此您必须评估所有优点和缺点。
最后一点。如果您的服务器设置正确,那么您可用的 PHP 个进程应该有相应数量的 MySQL 个进程。这是为了确保如果您的 PHP 进程被 100% 使用并且每个进程都需要执行一些数据库操作,那么您的 MySQL 服务器不应该成为瓶颈。在这种情况下,为什么不简化并在执行 long-运行ning API 调用时保持数据库连接打开?省去很多麻烦。