每次我构建Catalyst应用程序时,都会出现该应用程序启动(重新)启动非常缓慢的情况,延迟约为10秒。今天我发现延迟是由以下几行引起的:

use lib '/home/zoul/opt/lib/perl/5.8';
use lib '/home/zoul/opt/share/perl/5.8';
use lib '/home/zoul/opt/lib/perl/5.8.8';
use lib '/home/zoul/opt/share/perl/5.8.8';


这些行仅在服务器上需要,因为我没有root访问权限,并且我的Perl模块安装在~/opt下。 (我不能使用Apache的SetEnv模块,因为托管人不支持它。因此,我必须将库路径输入到App.pm中。)在出现延迟的开发机器上,该路径不存在。

我的问题:(1)为什么线路会造成这么多的延迟,大约7秒钟? (2)解决这个问题的好方法是什么?天真的条件use不起作用:

if ($on_the_hosting_machine)
{
    use lib '…';
}


我想我可以以某种方式eval,还是有更好的方法?

最佳答案

我不执行Catalyst,所以我不确定这是否能解决您的问题,但是您可以尝试执行lib.pm的本质作用:

BEGIN {
    if ( $on_the_hosting_machine ) {
        unshift @INC, qw'
            /home/zoul/opt/lib/perl/5.8
            /home/zoul/opt/share/perl/5.8
            /home/zoul/opt/lib/perl/5.8.8
            /home/zoul/opt/share/perl/5.8.8
        ';
    }
};

关于perl - 为什么我的Catalyst应用程序重新启动缓慢?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1295222/

10-12 03:10