gpt4 book ai didi

database - 我怎样才能在 mod_perl 中拥有 DBIC 持久数据库连接?

转载 作者:搜寻专家 更新时间:2023-10-30 20:07:15 24 4
gpt4 key购买 nike

我正在为我的网络应用程序使用 mod_perl。目前打算跨网使用一个mysql数据库。在对 display_customer_transaction.cgi 的每个 CGI 请求中,我的脚本将

  1. 打开跨网络的数据库连接
  2. 使用SQL语句对数据库进行查询
  3. 分析从数据库中检索到的数据
  4. 以 HTML 格式打印数据
  5. 关闭数据库连接

经过一些分析,我意识到步骤 (1) 是瓶颈。因此,我希望避免为每个 CGI 请求打开和关闭数据库连接。我的愿望是,如果我的第一个 CGI 请求打开一个数据库连接,我的第二个传入 CGI 请求(来自不同的客户端)可以重用第一个数据库连接。

我尝试在 Google 上搜索“DBIX 持久数据库连接”,但几乎找不到相关结果。 (编辑:那是因为它被称为 DBIC,或 DBIx::Class,而不是 DBIX。)

我进一步查找相关信息,使用 Apache::DBI (但是,我的意图是在 DBIX 上,而不是在 Apache::DBI 上)。有一些信息让我感到困惑:

The Apache::DBI module still has a limitation: it keeps database connections persistent on a per process basis.

一直以来,我对 Apache 如何为 CGI 请求提供服务的概念是

  1. Apache 总是会生成一个新进程来处理传入的新 CGI 请求。每当 Perl 解释器执行完 Perl 脚本时,进程就会死掉。

因此,如果 Apache::DBI 模块只能在每个进程的基础上保持数据库连接持久,我的第二个 CGI 请求如何重新使用第一个 CGI 请求打开的连接?

但回到我最初的问题。如何在 mod_perl 中建立 DBIX 持久数据库连接?

最佳答案

在注销之前尝试 Apache::DBI。但是,您还希望使 CGI 脚本持久化。如果您现在有普通的 CGI 程序,您可以使用 PerlRun 或 PerlRegistry 选项使它们持久化。那与 Apache::DBI 一起应该可以完成这项工作。当然,每个子进程都有 DBI 连接,但这并非不合理。

在你放弃之前试一试。 :)

关于database - 我怎样才能在 mod_perl 中拥有 DBIC 持久数据库连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/734289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com