Php 结业及;在远程API答复后重新打开中的mysql连接

Php 结业及;在远程API答复后重新打开中的mysql连接,php,mysql,mysqli,database-connection,Php,Mysql,Mysqli,Database Connection,我正在处理一个后端应用程序,它需要一些远程API请求,根据远程服务的负载,这些请求需要1~3秒才能响应 这个后端每秒会收到很多请求,我正在努力实现服务器的最佳性能 我应该在调用API之前关闭mysql连接,并在收到回复后重新打开它以释放一些资源吗 如果我这样做了,会发生什么错误 如果我无法再次连接,该怎么办 我必须在收到请求后存储和更新数据库 我正在使用纯PHP和MySQL(MySQLi)如果您的应用程序必须执行一些与数据库无关的耗时任务,那么您应该关闭连接,以便PHP进程不会阻塞MySQL服务

我正在处理一个后端应用程序,它需要一些远程API请求,根据远程服务的负载,这些请求需要1~3秒才能响应

这个后端每秒会收到很多请求,我正在努力实现服务器的最佳性能

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

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

如果我无法再次连接,该怎么办

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


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

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

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

更好的选择是将长时间运行的进程与主进程分离。有许多方法可以实现这一点。如果您可以在后台运行该进程,那么它将是最好的选择。缓存长时间运行的进程也是一个可行的选择。如果用户必须等待整个作业完成,则可以采用2或3步流程

  • 用户向服务器发送请求。PHP代码执行一些DB操作,并将用户重定向到第二步
  • 另一个PHP进程调用API,只执行与API相关的逻辑。没有建立数据库连接。完成后,应用程序将用户重定向到最后一步
  • PHP应用程序执行另一组DB活动,并将最终响应返回给用户
  • 当然,对于如此复杂的操作,您的应用程序更有可能失去事务正确性,因此您必须评估所有优点和缺点

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