2012-05-29 48 views
1

我工作的一个项目,在这里我使用mysql数据库有三个表:请求回应,并用户如何使用持久的MySQL数据库连接在Perl CGI

第一个(索引)页面是链接可用的纯HTML。这些链接将执行Perl脚本从数据库获取数据并将数据传递给模板文件,以便生成下一页。

我的问题是每次我需要从MySQL数据库中获取数据时,是否需要打开与数据库的连接,并在获取查询结果后再次关闭它?如何在查询中维护连接,以便不需要重新连接到数据库?

我可以在单独的Perl文件中进行单独的查询吗?如果是的话如何提供Perl函数的链接?

+1

这是问前几年:Perl的连接池] [1] [1]:http://stackoverflow.com/questions/3267591/perl-connection-pooling – bluevector

+2

@jonnyGold :我可能对此有错,但我的理解是标准CGI应用程序不会在请求之间驻留。它会在每次请求时重新开始,执行并退出。链接到的SO问题中给出的建议将用户指向DBIx :: Connector,只要该句柄保持在范围内,DBIx :: Connector就只保持连接。由于基本CGI进程在每次请求后退出,因此每次关闭作用域,并且连接将关闭。这个问题不应该被视为一个确切的重复:它不是。 – DavidO

回答

2

那么,这实际上似乎更像是四个问题而已。正如@DavidO指出的那样,在CGI下,您不会在页面请求中保持持久的数据库连接。然而,让我来回答你没有问的主要问题:

“我的问题是每当我需要从MySQL 数据库获取数据的时间,我需要打开与数据库的连接,并 后得到查询结果再次关闭它?“

如果您的CGI脚本需要针对给定请求对数据库运行多个查询,则不需要关闭并重新打开每个查询的连接。查看DBI文档,您会发现可以为每个请求创建一个数据库句柄,只要连接保持打开状态,就可以使用该句柄对数据库运行任意数量的查询。向前推进,我鼓励你看看DBIx::Class,它可以为你抽象出大部分这些细节。如果你刚刚开始使用Perl和数据库,那么需要掌握很多东西,但是一旦你习惯了它,它就是一个真正的救星。

相关问题