我正在为我的 Web 应用程序使用 mod_perl。目前,我计划在网络上使用一个mysql数据库。在对 display_customer_transaction.cgi 的每个 CGI 请求中,我的脚本将
- 跨网络打开数据库连接
- 使用 SQL 语句对数据库执行查询
- 分析从数据库中检索到的数据
- 以 HTML 格式打印数据
- 关闭数据库连接
经过一些分析,我意识到步骤(1)是瓶颈。因此,我希望避免为每个 CGI 请求打开和关闭数据库连接。我的愿望是,如果我的第一个 CGI 请求打开了一个数据库连接,我的第二个传入 CGI 请求(来自不同的客户端)可能会重用第一个数据库连接。
我试图用谷歌搜索“DBIX 持久数据库连接”,但几乎找不到相关结果。(编辑:那是因为它被称为 DBIC,或 DBIx::Class,而不是 DBIX。)
我使用Apache::DBI进一步查找相关信息(但是,我的意图是在 DBIX 上,而不是 Apache::DBI)。有一些信息让我感到困惑:
Apache::DBI 模块仍然有一个限制:它在每个进程的基础上保持数据库连接的持久性。
一直以来,我对 Apache 如何服务 CGI 请求的概念是
- Apache 将始终生成一个新进程来服务传入的新 CGI 请求。每当 Perl 解释器执行完 Perl 脚本时,进程就会死掉。
那么,如果 Apache::DBI 模块只能在每个进程的基础上保持数据库连接的持久性,我的第二个 CGI 请求如何重新使用第一个 CGI 请求打开的连接?
但回到我原来的问题。如何在 mod_perl 中建立 DBIX 持久数据库连接?