Database 如何在mod_perl中建立DBIC持久数据库连接?
我正在为我的web应用程序使用mod_perl。目前,我计划在网络上使用mysql数据库。在每个显示_customer _transaction.CGI的CGI请求中,我的脚本将Database 如何在mod_perl中建立DBIC持久数据库连接?,database,perl,persistence,dbi,dbix-class,Database,Perl,Persistence,Dbi,Dbix Class,我正在为我的web应用程序使用mod_perl。目前,我计划在网络上使用mysql数据库。在每个显示_customer _transaction.CGI的CGI请求中,我的脚本将 打开跨网络的数据库连接 使用SQL语句对数据库执行查询 分析从数据库检索到的数据 以HTML格式打印数据 关闭数据库连接 经过一些分析,我意识到步骤(1)是瓶颈。因此,我希望避免为每个CGI请求打开和关闭数据库连接。我的愿望是,如果我的第一个CGI请求打开了一个数据库连接,我的第二个传入CGI请求(来自不同的客户端)可
但是回到我最初的问题上来。如何在mod_perl中建立DBIX持久数据库连接?在注销之前,请尝试Apache::DBI。但是,您还希望使CGI脚本持久化。如果您现在有普通的CGI程序,可以使用PerlRun或PerlRegistry选项使其持久化。这与Apache::DBI一起应该可以完成这项工作。当然,每个子进程都有DBI连接,但这并不是不合理的
在你放弃之前试试看。:) Apache::DBI改变了DBI模块的工作方式。假设您使用的是DBIx::Class(您不够具体),那么它将使用DBI模块来获取其数据库连接,因此这对您来说是可行的 当您使用mod_perl时(假设您的mod_perl设置是正确的),perl解释器将加载到Apache中,您的程序将加载到该解释器中。Apache运行有限数量的进程来服务请求——每个进程服务多个请求
Apache进程最终确实会消亡,并得到重生,但在这之前,它们服务于许多请求。这些是Apache::DBI文档所指的过程;它试图说“你将一次又一次重复使用同一个连接,但这并不意味着一次只能打开一个连接。”最后,根据每秒连接数非常低的判断,我现在没有使用持久性连接。对于性能扩展计划,我宁愿选择DBIx+memcache解决方案。请您澄清一下DBIx是什么意思?这是一个充满模块(DBIx::)的整个名称空间,还是其他什么?我的意思是: