代码之家  ›  专栏  ›  技术社区  ›  Jim

为了利用Perl中的FastCGI,我必须将DB连接/初始化放在FCGI循环之外吗?

  •  6
  • Jim  · 技术社区  · 17 年前

    假设我有一些Perl代码,每次命中时都会在数据库的特定行中增加一个列,而且我希望它经常被命中,所以我想用FCGI优化它。现在,我基本上把大部分代码包装成这样:

    while (FCGI::accept() >= 0) {
     [code which currently creates a db connection and makes calls through it]
    }
    

    4 回复  |  直到 17 年前
        1
  •  3
  •   mpeters    17 年前

    但是如果您决定使用持久连接,则需要担心连接超时。根据服务器设置和流量,在程序生命周期中的任何时候都会发生这种情况。 ping() Apache::DBI

        2
  •  2
  •   Schwern    17 年前

    不要将连接置于循环之外,可能会丢失连接,然后无法重新连接。你可以把它放到一个全局中,但是你必须进行连接检查并重新连接你自己。

    相反,使用 Ima::DBI 或 DBI->connect_cached()

    但在你费心之前,先做一些基准测试,找出你的瓶颈到底在哪里。在过去,数据库连接一直是我的瓶颈,但那是Oracle的瓶颈,也是10多年前的瓶颈。

        3
  •  1
  •   zigdon    17 年前

    即使保持DB连接在循环中,您仍然可以从FCGI中获益,但如果将其移出,您将获得更多的好处。

        4
  •  1
  •   bmdhacks    17 年前