【问题标题】:Does mod_perl play nicely with Moose?mod_perl 和 Moose 配合得很好吗?
【发布时间】:2011-11-15 17:54:23
【问题描述】:

我从基础开始学习 Perl,然后发现并学习了 Moose,用 Moose 编写了一个完整的应用程序,结果发现它必须在 mod_perl 下运行。所以我用 mod_perl 把我的代码扔到服务器上,一大堆东西都出了问题。一方面,会话信息已损坏,而本应超时的事情却没有——还有一大堆其他问题。

除了剔除全局变量以使代码按 mod_perl 中的预期运行之外,通常需要发生什么? mod_perl 和 Moose 配合得很好吗?在 mod_perl 下 Moose 是否有任何陷阱,或者我需要注意的 mod_perl 中的奇怪东西?

到目前为止,我学到的一件事是,由于代码是在 Apache 命名空间中编译和创建的,因此全局变量实际上永远不会被销毁——您必须通过初始化它们来清除它们 =/

【问题讨论】:

  • Apache命名空间编译几乎与全局初始化和销毁​​无关。事实是您的 Perl 解释器永远不会被破坏,这就是您的全局变量持续存在的原因。这将发生在任何长时间运行的守护进程(pperl、Starman、FastCGI 等)中,它会为其生命周期创建一个解释器。

标签: perl moose mod-perl


【解决方案1】:

是的,Moose 就是 Perl。当然,在 mod_perl 下适用于非 Moose 代码的任何警告也适用于 Moose。

你提到的全局变量问题与 Moose 无关。

【讨论】:

    【解决方案2】:

    我们非常高兴地使用 Moose 和 mod_perl。

    我会指出一些上下文 - 这很常见......

    • 红帽企业 5
    • Apache httpd 2.2.19 + mod_perl
    • Perl 5.8.8
    • 通过 local::lib 为其他所有内容(包括 Moose)提供前沿 CPAN 依赖项
    • 分叉前加载所有代码和大量上下文

    我不能说内存泄漏等。我们有 MaxRequestsPerChild=1000,但我从来没有在任何地方没有设置过合理的值。

    我们的测试套件不涉及 Apache(Plack 帮助很大)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-27
      • 1970-01-01
      • 2010-09-11
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      • 2011-11-27
      • 1970-01-01
      相关资源
      最近更新 更多